diff --git a/src/.vscode/launch.json b/src/.vscode/launch.json index 4d088fca..0e0b3c27 100644 --- a/src/.vscode/launch.json +++ b/src/.vscode/launch.json @@ -4,14 +4,94 @@ // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md "version": "0.2.0", "configurations": [ + { + "name": "Run WebApp", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "", + "program": "${workspaceFolder}/WebApp/bin/Debug/netcoreapp3.0/WebApp.dll", + "args": [], + "cwd": "${workspaceFolder}/WebApp/bin/Debug/netcoreapp3.0", + "stopAtEntry": false, + "serverReadyAction": { + "action": "openExternally", + "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": "Run CustomerManagementAPI", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "", + "program": "${workspaceFolder}/CustomerManagementAPI/bin/Debug/netcoreapp3.0/Pitstop.CustomerManagementAPI.dll", + "args": [], + "cwd": "${workspaceFolder}/CustomerManagementAPI/bin/Debug/netcoreapp3.0", + "stopAtEntry": false, + "serverReadyAction": { + "action": "openExternally", + "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": "Run VehicleManagementAPI", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "", + "program": "${workspaceFolder}/VehicleManagementAPI/bin/Debug/netcoreapp3.0/Pitstop.VehicleManagementAPI.dll", + "args": [], + "cwd": "${workspaceFolder}/VehicleManagementAPI/bin/Debug/netcoreapp3.0", + "stopAtEntry": false, + "serverReadyAction": { + "action": "openExternally", + "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": "Run WorkshopManagementAPI", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "", + "program": "${workspaceFolder}/WorkshopManagementAPI/bin/Debug/netcoreapp3.0/Pitstop.WorkshopManagementAPI.dll", + "args": [], + "cwd": "${workspaceFolder}/WorkshopManagementAPI/bin/Debug/netcoreapp3.0", + "stopAtEntry": false, + "serverReadyAction": { + "action": "openExternally", + "pattern": "^\\s*Now listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, { "name": "Run AuditlogService", "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/AuditlogService/bin/Debug/netcoreapp2.2/Pitstop.AuditlogService.dll", + "program": "${workspaceFolder}/AuditlogService/bin/Debug/netcoreapp3.0/Pitstop.AuditlogService.dll", "args": [], - "cwd": "${workspaceFolder}/AuditlogService/bin/Debug/netcoreapp2.2", + "cwd": "${workspaceFolder}/AuditlogService/bin/Debug/netcoreapp3.0", "stopAtEntry": false, "console": "externalTerminal", "env": { @@ -23,9 +103,9 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/InvoiceService/bin/Debug/netcoreapp2.2/Pitstop.InvoiceService.dll", + "program": "${workspaceFolder}/InvoiceService/bin/Debug/netcoreapp3.0/Pitstop.InvoiceService.dll", "args": [], - "cwd": "${workspaceFolder}/InvoiceService/bin/Debug/netcoreapp2.2", + "cwd": "${workspaceFolder}/InvoiceService/bin/Debug/netcoreapp3.0", "stopAtEntry": false, "console": "externalTerminal", "env": { @@ -37,9 +117,9 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/NotificationService/bin/Debug/netcoreapp2.2/Pitstop.NotificationService.dll", + "program": "${workspaceFolder}/NotificationService/bin/Debug/netcoreapp3.0/Pitstop.NotificationService.dll", "args": [], - "cwd": "${workspaceFolder}/NotificationService/bin/Debug/netcoreapp2.2", + "cwd": "${workspaceFolder}/NotificationService/bin/Debug/netcoreapp3.0", "stopAtEntry": false, "console": "externalTerminal", "env": { @@ -51,9 +131,9 @@ "type": "coreclr", "request": "launch", "preLaunchTask": "build", - "program": "${workspaceFolder}/TimeService/bin/Debug/netcoreapp2.2/Pitstop.TimeService.dll", + "program": "${workspaceFolder}/TimeService/bin/Debug/netcoreapp3.0/Pitstop.TimeService.dll", "args": [], - "cwd": "${workspaceFolder}/TimeService/bin/Debug/netcoreapp2.2", + "cwd": "${workspaceFolder}/TimeService/bin/Debug/netcoreapp3.0", "stopAtEntry": false, "console": "externalTerminal", "env": { @@ -64,10 +144,10 @@ "name": "Run WorkshopManagementEventHandler", "type": "coreclr", "request": "launch", - "preLaunchTask": "build", - "program": "${workspaceFolder}/WorkshopManagementEventHandler/bin/Debug/netcoreapp2.2/Pitstop.WorkshopManagementEventHandler.dll", + "preLaunchTask": "", + "program": "${workspaceFolder}/WorkshopManagementEventHandler/bin/Debug/netcoreapp3.0/Pitstop.WorkshopManagementEventHandler.dll", "args": [], - "cwd": "${workspaceFolder}/WorkshopManagementEventHandler/bin/Debug/netcoreapp2.2", + "cwd": "${workspaceFolder}/WorkshopManagementEventHandler/bin/Debug/netcoreapp3.0", "stopAtEntry": false, "console": "externalTerminal", "env": { diff --git a/src/AuditlogService/AuditlogService.csproj b/src/AuditlogService/AuditlogService.csproj index 9fcb1553..03fda8fe 100644 --- a/src/AuditlogService/AuditlogService.csproj +++ b/src/AuditlogService/AuditlogService.csproj @@ -2,10 +2,10 @@ Exe - netcoreapp2.2 + netcoreapp3.0 Pitstop.AuditlogService - Pitstop.AuditlogService - 7.1 + Pitstop.AuditlogService + 8.0 @@ -27,20 +27,16 @@ - - - - - + + + + + - - + - - false - \ No newline at end of file diff --git a/src/AuditlogService/Dockerfile b/src/AuditlogService/Dockerfile index 35fcb93a..18830e39 100644 --- a/src/AuditlogService/Dockerfile +++ b/src/AuditlogService/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -11,7 +11,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-runtime +FROM mcr.microsoft.com/dotnet/core/runtime:3.0 COPY --from=build-env /app/out . # Start diff --git a/src/AuditlogService/Program.cs b/src/AuditlogService/Program.cs index 7cad74d9..6ebf90b2 100644 --- a/src/AuditlogService/Program.cs +++ b/src/AuditlogService/Program.cs @@ -20,7 +20,7 @@ public static async Task Main(string[] args) private static IHostBuilder CreateHostBuilder(string[] args) { - var hostBuilder = new HostBuilder() + var hostBuilder = Host.CreateDefaultBuilder(args) .ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); diff --git a/src/CustomerManagementAPI/Commands/RegisterCustomer.cs b/src/CustomerManagementAPI/Commands/RegisterCustomer.cs index eea11d11..d61c5114 100644 --- a/src/CustomerManagementAPI/Commands/RegisterCustomer.cs +++ b/src/CustomerManagementAPI/Commands/RegisterCustomer.cs @@ -1,7 +1,5 @@ using Pitstop.Infrastructure.Messaging; using System; -using System.Collections.Generic; -using System.Text; namespace Pitstop.CustomerManagementAPI.Commands { diff --git a/src/CustomerManagementAPI/Controllers/CustomersController.cs b/src/CustomerManagementAPI/Controllers/CustomersController.cs index 1947f4cc..b2c91124 100644 --- a/src/CustomerManagementAPI/Controllers/CustomersController.cs +++ b/src/CustomerManagementAPI/Controllers/CustomersController.cs @@ -4,10 +4,12 @@ using Microsoft.AspNetCore.Http; using Pitstop.CustomerManagementAPI.DataAccess; using Pitstop.CustomerManagementAPI.Model; -using AutoMapper; using Pitstop.Infrastructure.Messaging; using Pitstop.CustomerManagementAPI.Events; using Pitstop.CustomerManagementAPI.Commands; +using Pitstop.CustomerManagementAPI.Mappers; +using Serilog; +using System; namespace Pitstop.Application.CustomerManagementAPI.Controllers { @@ -49,12 +51,12 @@ public async Task RegisterAsync([FromBody] RegisterCustomer comma if (ModelState.IsValid) { // insert customer - Customer customer = Mapper.Map(command); + Customer customer = command.MapToCustomer(); _dbContext.Customers.Add(customer); await _dbContext.SaveChangesAsync(); // send event - CustomerRegistered e = Mapper.Map(command); + CustomerRegistered e = command.MapToCustomerRegistered(); await _messagePublisher.PublishMessageAsync(e.MessageType, e , ""); // return result @@ -68,6 +70,7 @@ public async Task RegisterAsync([FromBody] RegisterCustomer comma "Try again, and if the problem persists " + "see your system administrator."); return StatusCode(StatusCodes.Status500InternalServerError); + throw; } } } diff --git a/src/CustomerManagementAPI/CustomerManagementAPI.csproj b/src/CustomerManagementAPI/CustomerManagementAPI.csproj index a513a0db..aaf43dbf 100644 --- a/src/CustomerManagementAPI/CustomerManagementAPI.csproj +++ b/src/CustomerManagementAPI/CustomerManagementAPI.csproj @@ -1,25 +1,25 @@  - netcoreapp2.2 + netcoreapp3.0 Pitstop.CustomerManagementAPI Pitstop.CustomerManagementAPI + 8.0 - + + + - - - - - + + + + - - false - + diff --git a/src/CustomerManagementAPI/Dockerfile b/src/CustomerManagementAPI/Dockerfile index 4a04ec64..5d0423ca 100644 --- a/src/CustomerManagementAPI/Dockerfile +++ b/src/CustomerManagementAPI/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -10,7 +10,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-aspnetcore-runtime +FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 COPY --from=build-env /app/out . # Expose ports diff --git a/src/CustomerManagementAPI/Events/CustomerRegistered.cs b/src/CustomerManagementAPI/Events/CustomerRegistered.cs index f57416b8..64c872be 100644 --- a/src/CustomerManagementAPI/Events/CustomerRegistered.cs +++ b/src/CustomerManagementAPI/Events/CustomerRegistered.cs @@ -1,4 +1,5 @@ -using Pitstop.Infrastructure.Messaging; +using Pitstop.CustomerManagementAPI.Commands; +using Pitstop.Infrastructure.Messaging; using System; using System.Collections.Generic; using System.Text; diff --git a/src/CustomerManagementAPI/Mappers/Mappers.cs b/src/CustomerManagementAPI/Mappers/Mappers.cs new file mode 100644 index 00000000..3fd21c0e --- /dev/null +++ b/src/CustomerManagementAPI/Mappers/Mappers.cs @@ -0,0 +1,32 @@ +using Pitstop.CustomerManagementAPI.Commands; +using Pitstop.CustomerManagementAPI.Events; +using Pitstop.CustomerManagementAPI.Model; + +namespace Pitstop.CustomerManagementAPI.Mappers +{ + public static class Mappers + { + public static CustomerRegistered MapToCustomerRegistered(this RegisterCustomer command) => new CustomerRegistered + ( + System.Guid.NewGuid(), + command.CustomerId, + command.Name, + command.Address, + command.PostalCode, + command.City, + command.TelephoneNumber, + command.EmailAddress + ); + + public static Customer MapToCustomer(this RegisterCustomer command) => new Customer + { + CustomerId = command.CustomerId, + Name = command.Name, + Address = command.Address, + PostalCode = command.PostalCode, + City = command.City, + TelephoneNumber = command.TelephoneNumber, + EmailAddress = command.EmailAddress + }; + } +} \ No newline at end of file diff --git a/src/CustomerManagementAPI/Model/Customer.cs b/src/CustomerManagementAPI/Model/Customer.cs index 171b5f4a..094c3080 100644 --- a/src/CustomerManagementAPI/Model/Customer.cs +++ b/src/CustomerManagementAPI/Model/Customer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using Microsoft.Extensions.Configuration; +using Pitstop.CustomerManagementAPI.Commands; namespace Pitstop.CustomerManagementAPI.Model { diff --git a/src/CustomerManagementAPI/Startup.cs b/src/CustomerManagementAPI/Startup.cs index ae57d80a..6fccab75 100644 --- a/src/CustomerManagementAPI/Startup.cs +++ b/src/CustomerManagementAPI/Startup.cs @@ -2,19 +2,14 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using Microsoft.EntityFrameworkCore; using Pitstop.CustomerManagementAPI.DataAccess; -using Swashbuckle.AspNetCore.Swagger; -using AutoMapper; -using Pitstop.CustomerManagementAPI.Model; using Pitstop.Infrastructure.Messaging; using System; -using Pitstop.CustomerManagementAPI.Events; -using Pitstop.CustomerManagementAPI.Commands; -using Microsoft.AspNetCore.Mvc; using Serilog; using Microsoft.Extensions.HealthChecks; +using Microsoft.OpenApi.Models; +using Microsoft.Extensions.Hosting; namespace Pitstop.CustomerManagementAPI { @@ -42,13 +37,14 @@ public void ConfigureServices(IServiceCollection services) services.AddTransient((sp) => new RabbitMQMessagePublisher(host, userName, password, "Pitstop")); // Add framework services. - services.AddMvc() - .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); + services + .AddMvc(options => options.EnableEndpointRouting = false) + .AddNewtonsoftJson(); // Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { - c.SwaggerDoc("v1", new Info { Title = "CustomerManagement API", Version = "v1" }); + c.SwaggerDoc("v1", new OpenApiInfo { Title = "CustomerManagement API", Version = "v1" }); }); services.AddHealthChecks(checks => @@ -59,7 +55,7 @@ public void ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime, CustomerManagementDBContext dbContext) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime, CustomerManagementDBContext dbContext) { Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(_configuration) @@ -70,8 +66,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplica app.UseDefaultFiles(); app.UseStaticFiles(); - SetupAutoMapper(); - // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); @@ -87,18 +81,5 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplica scope.ServiceProvider.GetService().MigrateDB(); } } - - private void SetupAutoMapper() - { - // setup automapper - var cfg = new AutoMapper.Configuration.MapperConfigurationExpression(); - cfg.CreateMap(); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())); - - Mapper.Initialize(cfg); - } } } diff --git a/src/Infrastructure.Messaging/Infrastructure.Messaging.csproj b/src/Infrastructure.Messaging/Infrastructure.Messaging.csproj index 78a66262..7fdec172 100644 --- a/src/Infrastructure.Messaging/Infrastructure.Messaging.csproj +++ b/src/Infrastructure.Messaging/Infrastructure.Messaging.csproj @@ -1,12 +1,12 @@  - netstandard2.0 + netstandard2.1 Pitstop.Infrastructure.Messaging Pitstop.Infrastructure.Messaging - 2.1.0 - 2.1.0.0 - 2.1.0.0 + 2.2.0 + 2.2.0.0 + 2.2.0.0 Infrastructure package for Pitstop sample application that contains helpers for interacting with the RabbitMQ message-broker used by the application. https://github.com/EdwinVW/pitstop/tree/master/src/Infrastructure.Messaging @@ -14,8 +14,8 @@ - - + + diff --git a/src/InvoiceService/Dockerfile b/src/InvoiceService/Dockerfile index ee78c50e..5c25090e 100644 --- a/src/InvoiceService/Dockerfile +++ b/src/InvoiceService/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -10,7 +10,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-runtime +FROM mcr.microsoft.com/dotnet/core/runtime:3.0 COPY --from=build-env /app/out . # Start diff --git a/src/InvoiceService/InvoiceService.csproj b/src/InvoiceService/InvoiceService.csproj index 1f077fd9..d9402e5e 100644 --- a/src/InvoiceService/InvoiceService.csproj +++ b/src/InvoiceService/InvoiceService.csproj @@ -2,10 +2,10 @@ Exe - netcoreapp2.2 + netcoreapp3.0 Pitstop.InvoiceService Pitstop.InvoiceService - 7.1 + 8.0 @@ -16,17 +16,17 @@ - - - - - - - - - + + + + + + + + + - + @@ -48,7 +48,5 @@ Never - - false - + \ No newline at end of file diff --git a/src/InvoiceService/Program.cs b/src/InvoiceService/Program.cs index 8d9b47c1..0b7935f6 100644 --- a/src/InvoiceService/Program.cs +++ b/src/InvoiceService/Program.cs @@ -22,7 +22,7 @@ public static async Task Main(string[] args) private static IHostBuilder CreateHostBuilder(string[] args) { - var hostBuilder = new HostBuilder() + var hostBuilder = Host.CreateDefaultBuilder(args) .ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); diff --git a/src/NotificationService/Dockerfile b/src/NotificationService/Dockerfile index 96ef4268..88cf071d 100644 --- a/src/NotificationService/Dockerfile +++ b/src/NotificationService/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -10,7 +10,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-runtime +FROM mcr.microsoft.com/dotnet/core/runtime:3.0 COPY --from=build-env /app/out . # Start diff --git a/src/NotificationService/NotificationService.csproj b/src/NotificationService/NotificationService.csproj index ec2f39e1..73696ceb 100644 --- a/src/NotificationService/NotificationService.csproj +++ b/src/NotificationService/NotificationService.csproj @@ -2,24 +2,24 @@ Exe - netcoreapp2.2 + netcoreapp3.0 Pitstop.NotificationService Pitstop.NotificationService - 7.1 + 8.0 - - - - - - - - - + + + + + + + + + - + @@ -38,7 +38,5 @@ Always - - false - + \ No newline at end of file diff --git a/src/NotificationService/Program.cs b/src/NotificationService/Program.cs index 27fbbc6f..9bbaaea3 100644 --- a/src/NotificationService/Program.cs +++ b/src/NotificationService/Program.cs @@ -22,7 +22,7 @@ public static async Task Main(string[] args) private static IHostBuilder CreateHostBuilder(string[] args) { - var hostBuilder = new HostBuilder() + var hostBuilder = Host.CreateDefaultBuilder(args) .ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); diff --git a/src/TimeService/Dockerfile b/src/TimeService/Dockerfile index 6e82fd04..630edbf8 100644 --- a/src/TimeService/Dockerfile +++ b/src/TimeService/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -11,7 +11,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-runtime +FROM mcr.microsoft.com/dotnet/core/runtime:3.0 COPY --from=build-env /app/out . # Start diff --git a/src/TimeService/Program.cs b/src/TimeService/Program.cs index f2672809..29fd952c 100644 --- a/src/TimeService/Program.cs +++ b/src/TimeService/Program.cs @@ -20,7 +20,7 @@ public static async Task Main(string[] args) private static IHostBuilder CreateHostBuilder(string[] args) { - var hostBuilder = new HostBuilder() + var hostBuilder = Host.CreateDefaultBuilder(args) .ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); diff --git a/src/TimeService/TimeService.csproj b/src/TimeService/TimeService.csproj index 79055dd8..b79071c9 100644 --- a/src/TimeService/TimeService.csproj +++ b/src/TimeService/TimeService.csproj @@ -2,22 +2,22 @@ Exe - netcoreapp2.2 + netcoreapp3.0 Pitstop.TimeService Pitstop.TimeService - 7.1 + 8.0 - - - - - - + + + + + + - + diff --git a/src/UITest/UITest.csproj b/src/UITest/UITest.csproj index 74a88d32..b489ac27 100644 --- a/src/UITest/UITest.csproj +++ b/src/UITest/UITest.csproj @@ -1,18 +1,19 @@ - netcoreapp2.2 + netcoreapp3.0 false Pitstop.UITest + 8.0 - + - + diff --git a/src/VehicleManagementAPI/Controllers/VehiclesController.cs b/src/VehicleManagementAPI/Controllers/VehiclesController.cs index 7e467447..403f7586 100644 --- a/src/VehicleManagementAPI/Controllers/VehiclesController.cs +++ b/src/VehicleManagementAPI/Controllers/VehiclesController.cs @@ -4,10 +4,10 @@ using Pitstop.Application.VehicleManagement.DataAccess; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Http; -using AutoMapper; using Pitstop.Infrastructure.Messaging; using Pitstop.Application.VehicleManagement.Events; using Pitstop.Application.VehicleManagement.Commands; +using Pitstop.VehicleManagementAPI.Mappers; namespace Pitstop.Application.VehicleManagement.Controllers { @@ -49,12 +49,12 @@ public async Task RegisterAsync([FromBody] RegisterVehicle comman if (ModelState.IsValid) { // insert vehicle - Vehicle vehicle = Mapper.Map(command); + Vehicle vehicle = command.MapToVehicle(); _dbContext.Vehicles.Add(vehicle); await _dbContext.SaveChangesAsync(); // send event - var e = Mapper.Map(command); + var e = VehicleRegistered.FromCommand(command); await _messagePublisher.PublishMessageAsync(e.MessageType, e, ""); //return result diff --git a/src/VehicleManagementAPI/Dockerfile b/src/VehicleManagementAPI/Dockerfile index 357605f5..7d627435 100644 --- a/src/VehicleManagementAPI/Dockerfile +++ b/src/VehicleManagementAPI/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -10,7 +10,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-aspnetcore-runtime +FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 COPY --from=build-env /app/out . # Expose ports @@ -19,4 +19,4 @@ ENV ASPNETCORE_URLS http://*:5000 HEALTHCHECK --interval=30s --timeout=3s --retries=1 CMD curl --silent --fail http://localhost:5000/hc || exit 1 # Start -ENTRYPOINT ["dotnet", "Pitstop.VehicleManagement.dll"] +ENTRYPOINT ["dotnet", "Pitstop.VehicleManagementAPI.dll"] diff --git a/src/VehicleManagementAPI/Events/VehicleRegistered.cs b/src/VehicleManagementAPI/Events/VehicleRegistered.cs index 5004c918..70a5610d 100644 --- a/src/VehicleManagementAPI/Events/VehicleRegistered.cs +++ b/src/VehicleManagementAPI/Events/VehicleRegistered.cs @@ -1,4 +1,5 @@ -using Pitstop.Infrastructure.Messaging; +using Pitstop.Application.VehicleManagement.Commands; +using Pitstop.Infrastructure.Messaging; using System; using System.Collections.Generic; using System.Text; @@ -20,5 +21,16 @@ public class VehicleRegistered : Event Type = type; OwnerId = ownerId; } + + public static VehicleRegistered FromCommand(RegisterVehicle command) + { + return new VehicleRegistered( + Guid.NewGuid(), + command.LicenseNumber, + command.Brand, + command.Type, + command.OwnerId + ); + } } } diff --git a/src/VehicleManagementAPI/Mappers/Mappers.cs b/src/VehicleManagementAPI/Mappers/Mappers.cs new file mode 100644 index 00000000..cb1e3b12 --- /dev/null +++ b/src/VehicleManagementAPI/Mappers/Mappers.cs @@ -0,0 +1,16 @@ +using Pitstop.Application.VehicleManagement.Commands; +using Pitstop.Application.VehicleManagement.Model; + +namespace Pitstop.VehicleManagementAPI.Mappers +{ + public static class Mappers + { + public static Vehicle MapToVehicle(this RegisterVehicle command) => new Vehicle + { + LicenseNumber = command.LicenseNumber, + Brand = command.Brand, + Type = command.Type, + OwnerId = command.OwnerId + }; + } +} \ No newline at end of file diff --git a/src/VehicleManagementAPI/Model/Vehicle.cs b/src/VehicleManagementAPI/Model/Vehicle.cs index 2a77e76b..3d386507 100644 --- a/src/VehicleManagementAPI/Model/Vehicle.cs +++ b/src/VehicleManagementAPI/Model/Vehicle.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Pitstop.Application.VehicleManagement.Model +namespace Pitstop.Application.VehicleManagement.Model { public class Vehicle { diff --git a/src/VehicleManagementAPI/Startup.cs b/src/VehicleManagementAPI/Startup.cs index 6a8070e4..9bf92f1a 100644 --- a/src/VehicleManagementAPI/Startup.cs +++ b/src/VehicleManagementAPI/Startup.cs @@ -3,18 +3,13 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using Microsoft.EntityFrameworkCore; using Pitstop.Application.VehicleManagement.DataAccess; -using Swashbuckle.AspNetCore.Swagger; -using AutoMapper; -using Pitstop.Application.VehicleManagement.Model; using Pitstop.Infrastructure.Messaging; -using Pitstop.Application.VehicleManagement.Commands; -using Pitstop.Application.VehicleManagement.Events; -using Microsoft.AspNetCore.Mvc; using Serilog; using Microsoft.Extensions.HealthChecks; +using Microsoft.OpenApi.Models; +using Microsoft.Extensions.Hosting; namespace Pitstop.Application.VehicleManagement { @@ -42,13 +37,14 @@ public void ConfigureServices(IServiceCollection services) services.AddTransient((sp) => new RabbitMQMessagePublisher(host, userName, password, "Pitstop")); // Add framework services. - services.AddMvc() - .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); + services + .AddMvc(options => options.EnableEndpointRouting = false) + .AddNewtonsoftJson(); // Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { - c.SwaggerDoc("v1", new Info { Title = "VehicleManagement API", Version = "v1" }); + c.SwaggerDoc("v1", new OpenApiInfo { Title = "VehicleManagement API", Version = "v1" }); }); services.AddHealthChecks(checks => @@ -59,7 +55,7 @@ public void ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime, VehicleManagementDBContext dbContext) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime, VehicleManagementDBContext dbContext) { Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(_configuration) @@ -70,8 +66,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplica app.UseDefaultFiles(); app.UseStaticFiles(); - SetupAutoMapper(); - // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); @@ -87,15 +81,5 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplica scope.ServiceProvider.GetService().MigrateDB(); } } - - private void SetupAutoMapper() - { - // setup automapper - var cfg = new AutoMapper.Configuration.MapperConfigurationExpression(); - cfg.CreateMap(); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())); - Mapper.Initialize(cfg); - } } } diff --git a/src/VehicleManagementAPI/VehicleManagementAPI.csproj b/src/VehicleManagementAPI/VehicleManagementAPI.csproj index f2dc518e..d48e9590 100644 --- a/src/VehicleManagementAPI/VehicleManagementAPI.csproj +++ b/src/VehicleManagementAPI/VehicleManagementAPI.csproj @@ -1,25 +1,25 @@  - netcoreapp2.2 - Pitstop.VehicleManagement + netcoreapp3.0 + Pitstop.VehicleManagementAPI Pitstop.Application.VehicleManagement + 8.0 - + + + - + - - - + + - - false - + diff --git a/src/WebApp/Controllers/CustomerManagementController.cs b/src/WebApp/Controllers/CustomerManagementController.cs index 3e3cd012..a8a70339 100644 --- a/src/WebApp/Controllers/CustomerManagementController.cs +++ b/src/WebApp/Controllers/CustomerManagementController.cs @@ -1,11 +1,8 @@ -using AutoMapper; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Pitstop.Models; using Pitstop.ViewModels; -using PitStop.Controllers; -using Polly; -using System; +using Pitstop.WebApp.Mappers; using System.Threading.Tasks; using WebApp.Commands; using WebApp.RESTClients; @@ -68,7 +65,7 @@ public async Task Register([FromForm] CustomerManagementNewViewMo { return await _resiliencyHelper.ExecuteResilient(async () => { - RegisterCustomer cmd = Mapper.Map(inputModel.Customer); + RegisterCustomer cmd = inputModel.MapToRegisterCustomer(); await _customerManagementAPI.RegisterCustomer(cmd); return RedirectToAction("Index"); }, View("Offline", new CustomerManagementOfflineViewModel())); diff --git a/src/WebApp/Controllers/VehicleManagementController.cs b/src/WebApp/Controllers/VehicleManagementController.cs index 2190f1b6..b7948372 100644 --- a/src/WebApp/Controllers/VehicleManagementController.cs +++ b/src/WebApp/Controllers/VehicleManagementController.cs @@ -1,15 +1,13 @@ -using System; -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Pitstop.Models; using Pitstop.ViewModels; -using AutoMapper; -using Polly; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc.Rendering; using WebApp.Commands; using WebApp.RESTClients; +using Pitstop.WebApp.Mappers; namespace PitStop.Controllers { @@ -83,7 +81,7 @@ public async Task Register([FromForm] VehicleManagementNewViewMod { return await _resiliencyHelper.ExecuteResilient(async () => { - RegisterVehicle cmd = Mapper.Map(inputModel); + RegisterVehicle cmd = inputModel.MapToRegisterVehicle(); await _vehicleManagementAPI.RegisterVehicle(cmd); return RedirectToAction("Index"); }, View("Offline", new VehicleManagementOfflineViewModel())); diff --git a/src/WebApp/Dockerfile b/src/WebApp/Dockerfile index 01d1edce..8bbbc943 100644 --- a/src/WebApp/Dockerfile +++ b/src/WebApp/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Install node @@ -23,7 +23,7 @@ RUN gulp default RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-aspnetcore-runtime +FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 COPY --from=build-env /app/out . # Expose ports diff --git a/src/WebApp/Mappers/Mappers.cs b/src/WebApp/Mappers/Mappers.cs new file mode 100644 index 00000000..c9fba504 --- /dev/null +++ b/src/WebApp/Mappers/Mappers.cs @@ -0,0 +1,29 @@ +using System; +using Pitstop.ViewModels; +using WebApp.Commands; + +namespace Pitstop.WebApp.Mappers +{ + public static class Mappers + { + public static RegisterCustomer MapToRegisterCustomer(this CustomerManagementNewViewModel source) => new RegisterCustomer + ( + Guid.NewGuid(), + Guid.NewGuid().ToString("N"), + source.Customer.Name, + source.Customer.Address, + source.Customer.PostalCode, + source.Customer.City, + source.Customer.TelephoneNumber, + source.Customer.EmailAddress + ); + + public static RegisterVehicle MapToRegisterVehicle(this VehicleManagementNewViewModel source) => new RegisterVehicle( + Guid.NewGuid(), + source.Vehicle.LicenseNumber, + source.Vehicle.Brand, + source.Vehicle.Type, + source.SelectedCustomerId + ); + } +} \ No newline at end of file diff --git a/src/WebApp/Startup.cs b/src/WebApp/Startup.cs index 83bc6451..1828c524 100644 --- a/src/WebApp/Startup.cs +++ b/src/WebApp/Startup.cs @@ -2,14 +2,8 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using AutoMapper; -using Pitstop.Models; -using Pitstop.ViewModels; using System; -using WebApp.Commands; using WebApp.RESTClients; -using Microsoft.AspNetCore.Mvc; using Serilog; using Microsoft.Extensions.HealthChecks; using System.Threading.Tasks; @@ -29,8 +23,9 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { // Add framework services - services.AddMvc() - .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); + services + .AddMvc(options => options.EnableEndpointRouting = false) + .AddNewtonsoftJson(); // add custom services services.AddHttpClient(); @@ -46,14 +41,14 @@ public void ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(_configuration) .Enrich.WithMachineName() .CreateLogger(); - if (env.IsDevelopment()) + if (env.EnvironmentName == "Development") { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); @@ -66,8 +61,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) app.UseStaticFiles(); - SetupAutoMapper(); - app.UseMvc(routes => { routes.MapRoute( @@ -75,19 +68,5 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) template: "{controller=Home}/{action=Index}/{id?}"); }); } - - private void SetupAutoMapper() - { - // setup automapper - var cfg = new AutoMapper.Configuration.MapperConfigurationExpression(); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())) - .ForCtorParam("customerId", opt => opt.MapFrom(c => Guid.NewGuid())); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())); - cfg.CreateMap().ConvertUsing((vm, rv) => - new RegisterVehicle(Guid.NewGuid(), vm.Vehicle.LicenseNumber, vm.Vehicle.Brand, vm.Vehicle.Type, vm.SelectedCustomerId)); - Mapper.Initialize(cfg); - } } } diff --git a/src/WebApp/WebApp.csproj b/src/WebApp/WebApp.csproj index 3b58a956..7b0d98ce 100644 --- a/src/WebApp/WebApp.csproj +++ b/src/WebApp/WebApp.csproj @@ -1,18 +1,19 @@  - netcoreapp2.2 + netcoreapp3.0 + 8.0 - + - - - - - - + + + + + + @@ -20,10 +21,7 @@ - + - - false - 2.0.0 - + diff --git a/src/WorkshopManagement.UnitTests/AutomapperFixture.cs b/src/WorkshopManagement.UnitTests/AutomapperFixture.cs deleted file mode 100644 index 9b443e5d..00000000 --- a/src/WorkshopManagement.UnitTests/AutomapperFixture.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Pitstop.WorkshopManagementAPI; -using Xunit; - -namespace WorkshopManagement.UnitTests -{ - /// - /// Defines a fixture for classes that need an initialized Automapper instance. - /// - public class AutomapperFixture - { - public AutomapperFixture() - { - AutomapperConfigurator.SetupAutoMapper(); - } - } - - /// - /// Collection definition. Decorate all classes that need an initialized Automapper - /// instance with a Collection("AutomapperCollection") attribute. - /// - [CollectionDefinition("AutomapperCollection")] - public class AutomapperCollection : ICollectionFixture - { - } -} \ No newline at end of file diff --git a/src/WorkshopManagement.UnitTests/WorkshopManagement.UnitTests.csproj b/src/WorkshopManagement.UnitTests/WorkshopManagement.UnitTests.csproj index efb52ee5..a9a446b0 100644 --- a/src/WorkshopManagement.UnitTests/WorkshopManagement.UnitTests.csproj +++ b/src/WorkshopManagement.UnitTests/WorkshopManagement.UnitTests.csproj @@ -1,16 +1,15 @@ - netcoreapp2.2 + netcoreapp3.0 false - - + - + diff --git a/src/WorkshopManagementAPI/AutomapperConfig.cs b/src/WorkshopManagementAPI/AutomapperConfig.cs deleted file mode 100644 index fe19ecd7..00000000 --- a/src/WorkshopManagementAPI/AutomapperConfig.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using AutoMapper; -using Pitstop.WorkshopManagementAPI.Commands; -using Pitstop.WorkshopManagementAPI.Events; - -namespace Pitstop.WorkshopManagementAPI -{ - public static class AutomapperConfigurator - { - public static void SetupAutoMapper() - { - // setup automapper - var cfg = new AutoMapper.Configuration.MapperConfigurationExpression(); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())); - cfg.CreateMap() - .ForCtorParam("messageId", opt => opt.MapFrom(c => Guid.NewGuid())); - Mapper.Initialize(cfg); - } - } -} \ No newline at end of file diff --git a/src/WorkshopManagementAPI/CommandHandlers/PlanMaintenanceJobCommandHandler.cs b/src/WorkshopManagementAPI/CommandHandlers/PlanMaintenanceJobCommandHandler.cs index 04b15cda..9d2e2f53 100644 --- a/src/WorkshopManagementAPI/CommandHandlers/PlanMaintenanceJobCommandHandler.cs +++ b/src/WorkshopManagementAPI/CommandHandlers/PlanMaintenanceJobCommandHandler.cs @@ -4,7 +4,6 @@ using Pitstop.Infrastructure.Messaging; using Pitstop.WorkshopManagementAPI.Commands; using Pitstop.WorkshopManagementAPI.Domain; -using Pitstop.WorkshopManagementAPI.Domain.Exceptions; using Pitstop.WorkshopManagementAPI.Repositories; namespace WorkshopManagementAPI.CommandHandlers diff --git a/src/WorkshopManagementAPI/Controllers/WorkshopPlanningController.cs b/src/WorkshopManagementAPI/Controllers/WorkshopPlanningController.cs index e2aa1b86..46892430 100644 --- a/src/WorkshopManagementAPI/Controllers/WorkshopPlanningController.cs +++ b/src/WorkshopManagementAPI/Controllers/WorkshopPlanningController.cs @@ -1,19 +1,15 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; -using Pitstop.Infrastructure.Messaging; using Pitstop.WorkshopManagementAPI.Repositories; using System; using Pitstop.WorkshopManagementAPI.Domain; -using System.Collections.Generic; using System.Linq; using Pitstop.WorkshopManagementAPI.Commands; using Pitstop.WorkshopManagementAPI.Domain.Exceptions; using Pitstop.WorkshopManagementAPI.Models; using WorkshopManagementAPI.CommandHandlers; using Serilog; -using WorkshopManagementAPI.Commands; -using Microsoft.Extensions.DependencyInjection; namespace Pitstop.WorkshopManagementAPI.Controllers { @@ -24,7 +20,8 @@ public class WorkshopPlanningController : Controller private readonly IPlanMaintenanceJobCommandHandler _planMaintenanceJobCommandHandler; private readonly IFinishMaintenanceJobCommandHandler _finishMaintenanceJobCommandHandler; - public WorkshopPlanningController(IWorkshopPlanningRepository planningRepo, + public WorkshopPlanningController( + IWorkshopPlanningRepository planningRepo, IPlanMaintenanceJobCommandHandler planMaintenanceJobCommandHandler, IFinishMaintenanceJobCommandHandler finishMaintenanceJobCommand) { diff --git a/src/WorkshopManagementAPI/Dockerfile b/src/WorkshopManagementAPI/Dockerfile index 65c72157..6f64ad6b 100644 --- a/src/WorkshopManagementAPI/Dockerfile +++ b/src/WorkshopManagementAPI/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -10,7 +10,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-aspnetcore-runtime +FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 COPY --from=build-env /app/out . # Expose ports diff --git a/src/WorkshopManagementAPI/Domain/WorkshopPlanning.cs b/src/WorkshopManagementAPI/Domain/WorkshopPlanning.cs index adbf8635..ec057d12 100644 --- a/src/WorkshopManagementAPI/Domain/WorkshopPlanning.cs +++ b/src/WorkshopManagementAPI/Domain/WorkshopPlanning.cs @@ -1,13 +1,11 @@ -using AutoMapper; -using Pitstop.Infrastructure.Messaging; +using Pitstop.Infrastructure.Messaging; using Pitstop.WorkshopManagementAPI.Commands; using Pitstop.WorkshopManagementAPI.Domain.Exceptions; using Pitstop.WorkshopManagementAPI.Events; +using Pitstop.WorkshopManagementAPI.Mappers; using System; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; -using WorkshopManagementAPI.Commands; namespace Pitstop.WorkshopManagementAPI.Domain { @@ -90,7 +88,7 @@ public IEnumerable PlanMaintenanceJob(PlanMaintenanceJob command) this.NumberOfParallelMaintenanceJobsOnAVehicleIsOne(command); // handle event - MaintenanceJobPlanned e = Mapper.Map(command); + MaintenanceJobPlanned e = command.MapToMaintenanceJobPlanned(); return HandleEvent(e); } @@ -107,7 +105,7 @@ public IEnumerable FinishMaintenanceJob(FinishMaintenanceJob command) job.FinishedMaintenanceJobCanNotBeFinished(); // handle event - MaintenanceJobFinished e = Mapper.Map(command); + MaintenanceJobFinished e = command.MapToMaintenanceJobFinished(); return HandleEvent(e); } diff --git a/src/WorkshopManagementAPI/Mappers/Mappers.cs b/src/WorkshopManagementAPI/Mappers/Mappers.cs new file mode 100644 index 00000000..c0e9d2bf --- /dev/null +++ b/src/WorkshopManagementAPI/Mappers/Mappers.cs @@ -0,0 +1,28 @@ +using System; +using Pitstop.WorkshopManagementAPI.Commands; +using Pitstop.WorkshopManagementAPI.Events; + +namespace Pitstop.WorkshopManagementAPI.Mappers +{ + public static class Mappers + { + public static MaintenanceJobPlanned MapToMaintenanceJobPlanned(this PlanMaintenanceJob source) => new MaintenanceJobPlanned( + Guid.NewGuid(), + source.JobId, + source.StartTime, + source.EndTime, + source.CustomerInfo, + source.VehicleInfo, + source.Description + ); + + public static MaintenanceJobFinished MapToMaintenanceJobFinished(this FinishMaintenanceJob source) => new MaintenanceJobFinished + ( + Guid.NewGuid(), + source.JobId, + source.StartTime, + source.EndTime, + source.Notes + ); + } +} \ No newline at end of file diff --git a/src/WorkshopManagementAPI/Repositories/DatabaseNotFoundException.cs b/src/WorkshopManagementAPI/Repositories/DatabaseNotFoundException.cs new file mode 100644 index 00000000..05d60ac6 --- /dev/null +++ b/src/WorkshopManagementAPI/Repositories/DatabaseNotFoundException.cs @@ -0,0 +1,24 @@ +using System; +using System.Runtime.Serialization; + +namespace Pitstop.WorkshopManagementAPI.Repositories +{ + public class DatabaseNotCreatedException : Exception + { + public DatabaseNotCreatedException() + { + } + + public DatabaseNotCreatedException(string message) : base(message) + { + } + + public DatabaseNotCreatedException(string message, Exception innerException) : base(message, innerException) + { + } + + protected DatabaseNotCreatedException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } + } +} \ No newline at end of file diff --git a/src/WorkshopManagementAPI/Repositories/SqlServerRefDataRepository.cs b/src/WorkshopManagementAPI/Repositories/SqlServerRefDataRepository.cs index ea44409b..addfd6b8 100644 --- a/src/WorkshopManagementAPI/Repositories/SqlServerRefDataRepository.cs +++ b/src/WorkshopManagementAPI/Repositories/SqlServerRefDataRepository.cs @@ -3,6 +3,7 @@ using Dapper; using Pitstop.WorkshopManagementAPI.Repositories.Model; using System.Data.SqlClient; +using System.Runtime.ExceptionServices; namespace Pitstop.WorkshopManagementAPI.Repositories { @@ -20,27 +21,42 @@ public async Task> GetCustomersAsync() List customers = new List(); using (SqlConnection conn = new SqlConnection(_connectionString)) { - var customersSelection = await conn.QueryAsync("select * from Customer"); + try + { + var customersSelection = await conn.QueryAsync("select * from Customer"); - if (customersSelection != null) + if (customersSelection != null) + { + customers.AddRange(customersSelection); + } + } + catch (SqlException ex) { - customers.AddRange(customersSelection); + HandleSqlException(ex); } } return customers; } + public async Task> GetVehiclesAsync() { List vehicles = new List(); using (SqlConnection conn = new SqlConnection(_connectionString)) { - var vehicleSelection = await conn.QueryAsync("select * from Vehicle"); + try + { + var vehicleSelection = await conn.QueryAsync("select * from Vehicle"); - if (vehicleSelection != null) + if (vehicleSelection != null) + { + vehicles.AddRange(vehicleSelection); + } + } + catch (SqlException ex) { - vehicles.AddRange(vehicleSelection); + HandleSqlException(ex); } } @@ -51,8 +67,17 @@ public async Task GetVehicleAsync(string licenseNumber) { using (SqlConnection conn = new SqlConnection(_connectionString)) { - return await conn.QueryFirstOrDefaultAsync("select * from Vehicle where LicenseNumber = @LicenseNumber", - new { LicenseNumber = licenseNumber }); + try + { + return await conn.QueryFirstOrDefaultAsync("select * from Vehicle where LicenseNumber = @LicenseNumber", + new { LicenseNumber = licenseNumber }); + + } + catch (SqlException ex) + { + HandleSqlException(ex); + } + return null; } } @@ -60,9 +85,35 @@ public async Task GetCustomerAsync(string customerId) { using (SqlConnection conn = new SqlConnection(_connectionString)) { - return await conn.QueryFirstOrDefaultAsync("select * from Customer where CustomerId = @CustomerId", - new { CustomerId = customerId }); + try + { + return await conn.QueryFirstOrDefaultAsync("select * from Customer where CustomerId = @CustomerId", + new { CustomerId = customerId }); + } + catch (SqlException ex) + { + HandleSqlException(ex); + } + return null; } } + + + private static void HandleSqlException(SqlException ex) + { + if (ex.Errors.Count > 0) + { + for (int i = 0; i < ex.Errors.Count; i++) + { + if (ex.Errors[i].Number == 4060) + { + throw new DatabaseNotCreatedException("WorkshopManagement database not found. This database is automatically created by the WorkshopManagementEventHandler. Run this service first."); + } + } + } + + // rethrow original exception without poluting the stacktrace + ExceptionDispatchInfo.Capture(ex).Throw(); + } } } diff --git a/src/WorkshopManagementAPI/Startup.cs b/src/WorkshopManagementAPI/Startup.cs index 7eb32d65..9bce9610 100644 --- a/src/WorkshopManagementAPI/Startup.cs +++ b/src/WorkshopManagementAPI/Startup.cs @@ -3,21 +3,13 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using Pitstop.Infrastructure.Messaging; -using Swashbuckle.AspNetCore.Swagger; -using AutoMapper; using Pitstop.WorkshopManagementAPI.Repositories; -using Pitstop.WorkshopManagementAPI.Commands; -using Pitstop.WorkshopManagementAPI.Events; -using Microsoft.AspNetCore.Mvc; using Serilog; using Microsoft.Extensions.HealthChecks; -using Microsoft.Extensions.Options; -using Microsoft.AspNetCore.Http.Features; -using Microsoft.AspNetCore.Hosting.Server.Features; -using System.Linq; using WorkshopManagementAPI.CommandHandlers; +using Microsoft.Extensions.Hosting; +using Microsoft.OpenApi.Models; namespace Pitstop.WorkshopManagementAPI { @@ -25,7 +17,7 @@ public class Startup { private IConfiguration _configuration; - public Startup(IHostingEnvironment env, IConfiguration configuration) + public Startup(IWebHostEnvironment env, IConfiguration configuration) { _configuration = configuration; } @@ -53,13 +45,14 @@ public void ConfigureServices(IServiceCollection services) services.AddCommandHandlers(); // Add framework services. - services.AddMvc() - .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); + services + .AddMvc((options) => options.EnableEndpointRouting = false) + .AddNewtonsoftJson(); // Register the Swagger generator, defining one or more Swagger documents services.AddSwaggerGen(c => { - c.SwaggerDoc("v1", new Info { Title = "WorkshopManagement API", Version = "v1" }); + c.SwaggerDoc("v1", new OpenApiInfo { Title = "WorkshopManagement API", Version = "v1" }); }); services.AddHealthChecks(checks => @@ -71,7 +64,7 @@ public void ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime, IWorkshopPlanningRepository workshopPlanningRepo) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime, IWorkshopPlanningRepository workshopPlanningRepo) { Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(_configuration) @@ -82,8 +75,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplica app.UseDefaultFiles(); app.UseStaticFiles(); - AutomapperConfigurator.SetupAutoMapper(); - // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); diff --git a/src/WorkshopManagementAPI/WorkshopManagementAPI.csproj b/src/WorkshopManagementAPI/WorkshopManagementAPI.csproj index d235291d..08d9fd01 100644 --- a/src/WorkshopManagementAPI/WorkshopManagementAPI.csproj +++ b/src/WorkshopManagementAPI/WorkshopManagementAPI.csproj @@ -1,26 +1,25 @@  - netcoreapp2.2 + netcoreapp3.0 Pitstop.WorkshopManagementAPI Pitstop.WorkshopManagementAPI + 8.0 - - + + + - + - - - + + - - false - + diff --git a/src/WorkshopManagementEventHandler/DataAccess/WorkshopManagementDBContext.cs b/src/WorkshopManagementEventHandler/DataAccess/WorkshopManagementDBContext.cs index beb33255..a0aeb2e6 100644 --- a/src/WorkshopManagementEventHandler/DataAccess/WorkshopManagementDBContext.cs +++ b/src/WorkshopManagementEventHandler/DataAccess/WorkshopManagementDBContext.cs @@ -28,16 +28,5 @@ protected override void OnModelCreating(ModelBuilder builder) base.OnModelCreating(builder); } - - //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - //{ - // // only used by EF tooling - // // TODO: make CN configurable - // if (!optionsBuilder.IsConfigured) - // { - // optionsBuilder.UseSqlServer("server=localhost:1434;user id=sa;password=8jkGh47hnDw89Haq8LN2;database=WorkshopManagement;"); - // } - // base.OnConfiguring(optionsBuilder); - //} } } diff --git a/src/WorkshopManagementEventHandler/Dockerfile b/src/WorkshopManagementEventHandler/Dockerfile index ab7566cd..d89c19cb 100644 --- a/src/WorkshopManagementEventHandler/Dockerfile +++ b/src/WorkshopManagementEventHandler/Dockerfile @@ -1,4 +1,4 @@ -FROM microsoft/dotnet:2.2-sdk AS build-env +FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build-env WORKDIR /app # Copy necessary files and restore as distinct layer @@ -10,7 +10,7 @@ COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image -FROM microsoft/dotnet:2.2-runtime +FROM mcr.microsoft.com/dotnet/core/runtime:3.0 COPY --from=build-env /app/out . # Start diff --git a/src/WorkshopManagementEventHandler/Program.cs b/src/WorkshopManagementEventHandler/Program.cs index f449e760..b625f16d 100644 --- a/src/WorkshopManagementEventHandler/Program.cs +++ b/src/WorkshopManagementEventHandler/Program.cs @@ -23,7 +23,7 @@ public static async Task Main(string[] args) private static IHostBuilder CreateHostBuilder(string[] args) { - var hostBuilder = new HostBuilder() + var hostBuilder = Host.CreateDefaultBuilder(args) .ConfigureHostConfiguration(configHost => { configHost.SetBasePath(Directory.GetCurrentDirectory()); diff --git a/src/WorkshopManagementEventHandler/WorkshopManagementEventHandler.csproj b/src/WorkshopManagementEventHandler/WorkshopManagementEventHandler.csproj index 9faaadfa..6a491ac3 100644 --- a/src/WorkshopManagementEventHandler/WorkshopManagementEventHandler.csproj +++ b/src/WorkshopManagementEventHandler/WorkshopManagementEventHandler.csproj @@ -2,29 +2,28 @@ Exe - netcoreapp2.2 + netcoreapp3.0 Pitstop.WorkshopManagementEventHandler Pitstop.WorkshopManagementEventHandler - 7.1 + 8.0 - - - - - - - - + + + + + + + + all runtime; build; native; contentfiles; analyzers - - - + + - + @@ -48,7 +47,5 @@ Always - - false - + \ No newline at end of file diff --git a/src/docker-compose.yml b/src/docker-compose.yml index d3966496..0de7e7e2 100644 --- a/src/docker-compose.yml +++ b/src/docker-compose.yml @@ -41,7 +41,7 @@ services: - ACCEPT_EULA=Y vehiclemanagementapi: - image: pitstop/vehiclemanagementapi:latest + image: pitstop/vehiclemanagementapi:1.0 build: VehicleManagementAPI depends_on: - rabbitmq @@ -52,7 +52,7 @@ services: - ASPNETCORE_ENVIRONMENT=Production customermanagementapi: - image: pitstop/customermanagementapi:latest + image: pitstop/customermanagementapi:1.0 build: CustomerManagementAPI depends_on: - rabbitmq @@ -63,7 +63,7 @@ services: - ASPNETCORE_ENVIRONMENT=Production workshopmanagementapi: - image: pitstop/workshopmanagementapi:latest + image: pitstop/workshopmanagementapi:1.0 build: WorkshopManagementAPI depends_on: - rabbitmq @@ -74,7 +74,7 @@ services: - ASPNETCORE_ENVIRONMENT=Production auditlogservice: - image: pitstop/auditlogservice:latest + image: pitstop/auditlogservice:1.0 build: AuditlogService container_name: auditlogservice depends_on: @@ -83,7 +83,7 @@ services: - DOTNET_ENVIRONMENT=Production invoiceservice: - image: pitstop/invoiceservice:latest + image: pitstop/invoiceservice:1.0 build: InvoiceService container_name: invoiceservice depends_on: @@ -94,7 +94,7 @@ services: - DOTNET_ENVIRONMENT=Production notificationservice: - image: pitstop/notificationservice:latest + image: pitstop/notificationservice:1.0 build: NotificationService container_name: notificationservice depends_on: @@ -105,7 +105,7 @@ services: - DOTNET_ENVIRONMENT=Production timeservice: - image: pitstop/timeservice:latest + image: pitstop/timeservice:1.0 build: TimeService container_name: timeservice depends_on: @@ -114,7 +114,7 @@ services: - DOTNET_ENVIRONMENT=Production workshopmanagementeventhandler: - image: pitstop/workshopmanagementeventhandler:latest + image: pitstop/workshopmanagementeventhandler:1.0 build: WorkshopManagementEventHandler container_name: workshopmanagementeventhandler depends_on: @@ -124,7 +124,7 @@ services: - DOTNET_ENVIRONMENT=Production webapp: - image: pitstop/webapp:latest + image: pitstop/webapp:1.0 build: WebApp container_name: webapp depends_on: diff --git a/src/k8s/Istio/istio-crds.yaml b/src/k8s/Istio/istio-crds.yaml index d76b719b..03732338 100644 --- a/src/k8s/Istio/istio-crds.yaml +++ b/src/k8s/Istio/istio-crds.yaml @@ -31,7 +31,10 @@ data: - istio-io - networking-istio-io scope: Namespaced - version: v1alpha3 + versions: + - name: v1alpha3 + served: true + storage: true additionalPrinterColumns: - JSONPath: .spec.gateways description: The names of gateways and sidecars that should apply these routes @@ -73,7 +76,10 @@ data: - istio-io - networking-istio-io scope: Namespaced - version: v1alpha3 + versions: + - name: v1alpha3 + served: true + storage: true additionalPrinterColumns: - JSONPath: .spec.host description: The name of a service from the service registry @@ -111,7 +117,10 @@ data: - istio-io - networking-istio-io scope: Namespaced - version: v1alpha3 + versions: + - name: v1alpha3 + served: true + storage: true additionalPrinterColumns: - JSONPath: .spec.hosts description: The hosts associated with the ServiceEntry @@ -156,7 +165,10 @@ data: - istio-io - networking-istio-io scope: Namespaced - version: v1alpha3 + versions: + - name: v1alpha3 + served: true + storage: true --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -179,7 +191,10 @@ data: - istio-io - networking-istio-io scope: Namespaced - version: v1alpha3 + versions: + - name: v1alpha3 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -202,7 +217,10 @@ data: - istio-io - rbac-istio-io scope: Cluster - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -225,7 +243,10 @@ data: - istio-io - authentication-istio-io scope: Namespaced - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -249,7 +270,10 @@ data: - istio-io - authentication-istio-io scope: Cluster - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -272,7 +296,10 @@ data: - istio-io - apim-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -295,7 +322,10 @@ data: - istio-io - apim-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -318,7 +348,10 @@ data: - istio-io - apim-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -341,7 +374,10 @@ data: - istio-io - apim-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -366,7 +402,10 @@ data: - istio-io - policy-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -391,7 +430,10 @@ data: - istio-io - policy-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -416,7 +458,10 @@ data: - istio-io - rbac-istio-io scope: Namespaced - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -441,7 +486,10 @@ data: - istio-io - rbac-istio-io scope: Namespaced - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -466,7 +514,10 @@ data: - istio-io - rbac-istio-io scope: Namespaced - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true additionalPrinterColumns: - JSONPath: .spec.roleRef.name description: The name of the ServiceRole object being referenced @@ -503,7 +554,10 @@ data: - istio-io - policy-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -528,7 +582,10 @@ data: - istio-io - policy-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -553,7 +610,10 @@ data: - istio-io - policy-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 @@ -578,7 +638,10 @@ data: - istio-io - policy-istio-io scope: Namespaced - version: v1alpha2 + versions: + - name: v1alpha2 + served: true + storage: true --- @@ -612,7 +675,10 @@ data: - istio-io - networking-istio-io scope: Namespaced - version: v1alpha3 + versions: + - name: v1alpha3 + served: true + storage: true --- @@ -644,7 +710,10 @@ data: - istio-io - rbac-istio-io scope: Namespaced - version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true --- @@ -698,7 +767,7 @@ apiVersion: batch/v1 kind: Job metadata: namespace: istio-system - name: istio-init-crd-10 + name: istio-init-crd-10-1.3.0 spec: template: metadata: @@ -708,7 +777,7 @@ spec: serviceAccountName: istio-init-service-account containers: - name: istio-init-crd-10 - image: "docker.io/istio/kubectl:1.2.5" + image: "docker.io/istio/kubectl:1.3.0" imagePullPolicy: IfNotPresent volumeMounts: - name: crd-10 @@ -727,7 +796,7 @@ apiVersion: batch/v1 kind: Job metadata: namespace: istio-system - name: istio-init-crd-11 + name: istio-init-crd-11-1.3.0 spec: template: metadata: @@ -737,7 +806,7 @@ spec: serviceAccountName: istio-init-service-account containers: - name: istio-init-crd-11 - image: "docker.io/istio/kubectl:1.2.5" + image: "docker.io/istio/kubectl:1.3.0" imagePullPolicy: IfNotPresent volumeMounts: - name: crd-11 @@ -756,7 +825,7 @@ apiVersion: batch/v1 kind: Job metadata: namespace: istio-system - name: istio-init-crd-12 + name: istio-init-crd-12-1.3.0 spec: template: metadata: @@ -766,7 +835,7 @@ spec: serviceAccountName: istio-init-service-account containers: - name: istio-init-crd-12 - image: "docker.io/istio/kubectl:1.2.5" + image: "docker.io/istio/kubectl:1.3.0" imagePullPolicy: IfNotPresent volumeMounts: - name: crd-12 diff --git a/src/k8s/Istio/istio.yaml b/src/k8s/Istio/istio.yaml index 2300ebec..27d7d267 100644 --- a/src/k8s/Istio/istio.yaml +++ b/src/k8s/Istio/istio.yaml @@ -58,7 +58,7 @@ metadata: chart: mixer heritage: Tiller release: istio - version: 1.2.5 + version: 1.3.0 istio: mixer istio-mixer-type: policy spec: @@ -81,7 +81,7 @@ metadata: chart: mixer heritage: Tiller release: istio - version: 1.2.5 + version: 1.3.0 istio: mixer istio-mixer-type: telemetry spec: @@ -269,6 +269,7 @@ data: - zipkins failurePolicy: Fail sideEffects: None + --- # Source: istio/charts/grafana/templates/configmap-custom-resources.yaml apiVersion: v1 @@ -338,7 +339,7 @@ data: apiVersion: v1 kind: ConfigMap metadata: - name: istio-grafana-configuration-dashboards-galley-dashboard + name: istio-grafana-configuration-dashboards-citadel-dashboard namespace: istio-system labels: app: grafana @@ -347,17 +348,7 @@ metadata: release: istio istio: grafana data: - galley-dashboard.json: '{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], + citadel-dashboard.json: '{ "annotations": { "list": [ { @@ -371,30 +362,46 @@ data: } ] }, - "editable": false, + "description": "", + "editable": true, "gnetId": null, "graphTooltip": 0, "links": [], "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 8, + "panels": [], + "title": "Performance", + "type": "row" + }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "CPU usage across Citadel instances.", "fill": 1, "gridPos": { - "h": 5, - "w": 24, + "h": 6, + "w": 8, "x": 0, - "y": 0 + "y": 1 }, - "id": 46, + "id": 10, "legend": { + "alignAsTable": false, "avg": false, "current": false, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -404,7 +411,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -413,18 +420,25 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(istio_build{component=\"galley\"}) by (tag)", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"citadel\", pod_name=~\"istio-citadel-.*\"}[1m]))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ tag }}", + "legendFormat": "Citadel CPU usage rate", "refId": "A" + }, + { + "expr": "irate(process_cpu_seconds_total{job=\"citadel\"}[1m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Citadel CPU usage irate", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Galley Versions", + "title": "CPU", "tooltip": { "shared": true, "sort": 0, @@ -441,7 +455,7 @@ data: "yaxes": [ { "format": "short", - "label": null, + "label": "", "logBase": 1, "max": null, "min": null, @@ -453,7 +467,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -461,33 +475,20 @@ data: "alignLevel": null } }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 40, - "panels": [], - "title": "Resource Usage", - "type": "row" - }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "Citadel process memory statistics.", "fill": 1, "gridPos": { - "h": 8, - "w": 6, - "x": 0, - "y": 6 + "h": 6, + "w": 8, + "x": 8, + "y": 1 }, - "id": 36, + "id": 12, "legend": { "avg": false, "current": false, @@ -502,7 +503,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -511,60 +512,39 @@ data: "steppedLine": false, "targets": [ { - "expr": "process_virtual_memory_bytes{job=\"galley\"}", + "expr": "process_virtual_memory_bytes{job=\"citadel\"}", "format": "time_series", - "intervalFactor": 2, + "intervalFactor": 1, "legendFormat": "Virtual Memory", "refId": "A" }, { - "expr": "process_resident_memory_bytes{job=\"galley\"}", + "expr": "process_resident_memory_bytes{job=\"citadel\"}", "format": "time_series", - "intervalFactor": 2, + "intervalFactor": 1, "legendFormat": "Resident Memory", "refId": "B" }, { - "expr": "go_memstats_heap_sys_bytes{job=\"galley\"}", + "expr": "go_memstats_heap_sys_bytes{job=\"citadel\"}", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "heap sys", + "intervalFactor": 1, + "legendFormat": "Heap Memory Total", "refId": "C" }, { - "expr": "go_memstats_heap_alloc_bytes{job=\"galley\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "heap alloc", - "refId": "D" - }, - { - "expr": "go_memstats_alloc_bytes{job=\"galley\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Alloc", - "refId": "F" - }, - { - "expr": "go_memstats_heap_inuse_bytes{job=\"galley\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Heap in-use", - "refId": "G" - }, - { - "expr": "go_memstats_stack_inuse_bytes{job=\"galley\"}", + "expr": "go_memstats_alloc_bytes{job=\"citadel\"}", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Stack in-use", - "refId": "H" + "intervalFactor": 1, + "legendFormat": "Heap Memory Allocated", + "refId": "E" }, { - "expr": "sum(container_memory_usage_bytes{container_name=~\"galley\", pod_name=~\"istio-galley-.*\"})", + "expr": "go_memstats_heap_inuse_bytes{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Total (kis)", - "refId": "E" + "legendFormat": "Heap Inuse", + "refId": "F" } ], "thresholds": [], @@ -600,7 +580,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -613,15 +593,14 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 8, - "w": 6, - "x": 6, - "y": 6 + "h": 6, + "w": 8, + "x": 16, + "y": 1 }, - "id": 38, + "id": 14, "legend": { "avg": false, "current": false, @@ -636,7 +615,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -645,32 +624,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}[1m]))", + "expr": "go_goroutines{job=\"citadel\"}", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Total (k8s)", + "intervalFactor": 1, + "legendFormat": "Goroutines", "refId": "A" - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}[1m])) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B" - }, - { - "expr": "irate(process_cpu_seconds_total{job=\"galley\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "galley (self-reported)", - "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "CPU", + "title": "Goroutines", "tooltip": { "shared": true, "sort": 0, @@ -707,20 +672,33 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 7 + }, + "id": 28, + "panels": [], + "title": "General", + "type": "row" + }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "Total number of CSR requests made to Citadel.", "fill": 1, "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 6 + "h": 5, + "w": 12, + "x": 0, + "y": 8 }, - "id": 42, + "id": 30, "legend": { "avg": false, "current": false, @@ -735,7 +713,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -744,25 +722,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "process_open_fds{job=\"galley\"}", + "expr": "citadel_server_csr_count{job=\"citadel\"}", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Open FDs (galley)", + "intervalFactor": 1, + "legendFormat": "CSR Request Count", "refId": "A" - }, - { - "expr": "container_fs_usage_bytes{container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ container_name }} ", - "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Disk", + "title": "CSR Requests", "tooltip": { "shared": true, "sort": 0, @@ -791,7 +762,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -804,15 +775,15 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "The number of certificates issuances that have succeeded.", "fill": 1, "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 6 + "h": 5, + "w": 12, + "x": 12, + "y": 8 }, - "id": 44, + "id": 32, "legend": { "avg": false, "current": false, @@ -827,7 +798,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -836,32 +807,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "go_goroutines{job=\"galley\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "goroutines_total", - "refId": "A" - }, - { - "expr": "galley_mcp_source_clients_total", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "clients_total", - "refId": "B" - }, - { - "expr": "go_goroutines{job=\"galley\"}/galley_mcp_source_clients_total", + "expr": "citadel_server_success_cert_issuance_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "avg_goroutines_per_client", - "refId": "C" + "legendFormat": "Certificates Issued", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Goroutines", + "title": "Certificates Issued", "tooltip": { "shared": true, "sort": 0, @@ -904,11 +861,11 @@ data: "h": 1, "w": 24, "x": 0, - "y": 14 + "y": 13 }, - "id": 10, + "id": 23, "panels": [], - "title": "Runtime", + "title": "Errors", "type": "row" }, { @@ -916,20 +873,22 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "The number of errors occurred when creating the CSR.", "fill": 1, "gridPos": { - "h": 6, + "h": 5, "w": 8, "x": 0, - "y": 15 + "y": 14 }, - "id": 2, + "id": 20, "legend": { + "alignAsTable": false, "avg": false, "current": false, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -939,7 +898,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -948,32 +907,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(galley_runtime_strategy_on_change_total[1m])) * 60", + "expr": "citadel_secret_controller_csr_err_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Strategy Change Events", + "legendFormat": "CSR Creation Error Count", "refId": "A" - }, - { - "expr": "sum(rate(galley_runtime_processor_events_processed_total[1m])) * 60", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Processed Events", - "refId": "B" - }, - { - "expr": "sum(rate(galley_runtime_processor_snapshots_published_total[1m])) * 60", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Snapshot Published", - "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Event Rates", + "title": "CSR Creation Errors", "tooltip": { "shared": true, "sort": 0, @@ -990,7 +935,7 @@ data: "yaxes": [ { "format": "short", - "label": "Events/min", + "label": "", "logBase": 1, "max": null, "min": null, @@ -998,7 +943,7 @@ data: }, { "format": "short", - "label": "", + "label": null, "logBase": 1, "max": null, "min": null, @@ -1015,15 +960,14 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, + "h": 5, "w": 8, "x": 8, - "y": 15 + "y": 14 }, - "id": 4, + "id": 24, "legend": { "avg": false, "current": false, @@ -1038,7 +982,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -1047,32 +991,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(galley_runtime_strategy_timer_max_time_reached_total[1m])) * 60", + "expr": "citadel_server_csr_parsing_err_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Max Time Reached", + "legendFormat": "CSR Parse Error Count", "refId": "A" - }, - { - "expr": "sum(rate(galley_runtime_strategy_timer_quiesce_reached_total[1m])) * 60", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Quiesce Reached", - "refId": "B" - }, - { - "expr": "sum(rate(galley_runtime_strategy_timer_resets_total[1m])) * 60", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Timer Resets", - "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Timer Rates", + "title": "CSR Parse Errors", "tooltip": { "shared": true, "sort": 0, @@ -1089,7 +1019,7 @@ data: "yaxes": [ { "format": "short", - "label": "Events/min", + "label": null, "logBase": 1, "max": null, "min": null, @@ -1114,15 +1044,15 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "The number of authentication failures.", "fill": 1, "gridPos": { - "h": 6, + "h": 5, "w": 8, "x": 16, - "y": 15 + "y": 14 }, - "id": 8, + "id": 26, "legend": { "avg": false, "current": false, @@ -1137,48 +1067,27 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 3, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "stack": true, + "stack": false, "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", + "expr": "citadel_server_authentication_failure_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "P50", + "legendFormat": "Authentication Failure Count", "refId": "A" - }, - { - "expr": "histogram_quantile(0.90, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "P90", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.95, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "P95", - "refId": "C" - }, - { - "expr": "histogram_quantile(0.99, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "P99", - "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Events Per Snapshot", + "title": "Authentication Failures", "tooltip": { "shared": true, "sort": 0, @@ -1215,20 +1124,33 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 4, + "panels": [], + "title": "Secret Controller", + "type": "row" + }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "The number of certificates created due to service account creation.", "fill": 1, "gridPos": { - "h": 6, + "h": 5, "w": 8, - "x": 8, - "y": 21 + "x": 0, + "y": 20 }, - "id": 6, + "id": 2, "legend": { "avg": false, "current": false, @@ -1243,19 +1165,19 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, - "steppedLine": false, + "steppedLine": true, "targets": [ { - "expr": "sum by (typeURL) (galley_runtime_state_type_instances_total)", + "expr": "citadel_secret_controller_svc_acc_created_cert_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ typeURL }}", + "legendFormat": "SA Secrets Created", "refId": "A" } ], @@ -1263,7 +1185,7 @@ data: "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "State Type Instances", + "title": "Service Account Secrets Created (due to SA creation)", "tooltip": { "shared": true, "sort": 0, @@ -1279,8 +1201,9 @@ data: }, "yaxes": [ { + "decimals": null, "format": "short", - "label": "Count", + "label": "Certs Created", "logBase": 1, "max": null, "min": null, @@ -1300,33 +1223,20 @@ data: "alignLevel": null } }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 27 - }, - "id": 34, - "panels": [], - "title": "Validation", - "type": "row" - }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "The number of certificates deleted due to service account deletion.", "fill": 1, "gridPos": { - "h": 6, + "h": 5, "w": 8, - "x": 0, - "y": 28 + "x": 8, + "y": 20 }, - "id": 28, + "id": 16, "legend": { "avg": false, "current": false, @@ -1341,34 +1251,27 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, - "steppedLine": false, + "steppedLine": true, "targets": [ { - "expr": "galley_validation_cert_key_updates{job=\"galley\"}", + "expr": "citadel_secret_controller_svc_acc_deleted_cert_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Key Updates", + "legendFormat": "SA Secrets Deleted", "refId": "A" - }, - { - "expr": "galley_validation_cert_key_update_errors{job=\"galley\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Key Update Errors: {{ error }}", - "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Validation Webhook Certificate", + "title": "Service Account Secrets Deleted (due to SA deletion)", "tooltip": { "shared": true, "sort": 0, @@ -1384,8 +1287,9 @@ data: }, "yaxes": [ { + "decimals": null, "format": "short", - "label": null, + "label": "Certs Created", "logBase": 1, "max": null, "min": null, @@ -1410,15 +1314,15 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "The number of certificates recreated due to secret deletion (service account still exists).", "fill": 1, "gridPos": { - "h": 6, + "h": 5, "w": 8, - "x": 8, - "y": 28 + "x": 16, + "y": 20 }, - "id": 30, + "id": 6, "legend": { "avg": false, "current": false, @@ -1433,34 +1337,27 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, - "steppedLine": false, + "steppedLine": true, "targets": [ { - "expr": "sum(galley_validation_passed{job=\"galley\"}) by (group, version, resource)", + "expr": "citadel_secret_controller_secret_deleted_cert_count{job=\"citadel\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Passed: {{ group }}/{{ version }}/{{resource}}", + "legendFormat": "SA Secrets Recreated", "refId": "A" - }, - { - "expr": "sum(galley_validation_failed{job=\"galley\"}) by (group, version, resource, reason)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Failed: {{ group }}/{{ version }}/{{resource}} ({{ reason}})", - "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Resource Validation", + "title": "Service Account Secrets Recreated (due to errant deletion)", "tooltip": { "shared": true, "sort": 0, @@ -1476,8 +1373,9 @@ data: }, "yaxes": [ { + "decimals": null, "format": "short", - "label": null, + "label": "Certs Created", "logBase": 1, "max": null, "min": null, @@ -1496,7 +1394,91 @@ data: "align": false, "alignLevel": null } - }, + } + ], + "refresh": "5s", + "schemaVersion": 18, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Citadel Dashboard", + "uid": "OOyOqb4Wz", + "version": 1 +}' +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: istio-grafana-configuration-dashboards-galley-dashboard + namespace: istio-system + labels: + app: grafana + chart: grafana + heritage: Tiller + release: istio + istio: grafana +data: + galley-dashboard.json: '{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "links": [], + "panels": [ { "aliasColors": {}, "bars": false, @@ -1505,12 +1487,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 28 + "h": 5, + "w": 24, + "x": 0, + "y": 0 }, - "id": 32, + "id": 46, "legend": { "avg": false, "current": false, @@ -1534,10 +1516,10 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(galley_validation_http_error{job=\"galley\"}) by (status)", + "expr": "sum(istio_build{component=\"galley\"}) by (tag)", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ status }}", + "legendFormat": "{{ tag }}", "refId": "A" } ], @@ -1545,7 +1527,7 @@ data: "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Validation HTTP Errors", + "title": "Galley Versions", "tooltip": { "shared": true, "sort": 0, @@ -1574,7 +1556,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -1588,11 +1570,11 @@ data: "h": 1, "w": 24, "x": 0, - "y": 34 + "y": 5 }, - "id": 12, + "id": 40, "panels": [], - "title": "Kubernetes Source", + "title": "Resource Usage", "type": "row" }, { @@ -1603,12 +1585,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, + "h": 8, + "w": 6, "x": 0, - "y": 35 + "y": 6 }, - "id": 14, + "id": 36, "legend": { "avg": false, "current": false, @@ -1632,25 +1614,67 @@ data: "steppedLine": false, "targets": [ { - "expr": "rate(galley_source_kube_event_success_total[1m]) * 60", + "expr": "process_virtual_memory_bytes{job=\"galley\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Success", + "intervalFactor": 2, + "legendFormat": "Virtual Memory", "refId": "A" }, { - "expr": "rate(galley_source_kube_event_error_total[1m]) * 60", + "expr": "process_resident_memory_bytes{job=\"galley\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Error", + "intervalFactor": 2, + "legendFormat": "Resident Memory", "refId": "B" + }, + { + "expr": "go_memstats_heap_sys_bytes{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "C" + }, + { + "expr": "go_memstats_heap_alloc_bytes{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F" + }, + { + "expr": "go_memstats_heap_inuse_bytes{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Heap in-use", + "refId": "G" + }, + { + "expr": "go_memstats_stack_inuse_bytes{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "H" + }, + { + "expr": "sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Total (kis)", + "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Source Event Rate", + "title": "Memory", "tooltip": { "shared": true, "sort": 0, @@ -1667,7 +1691,7 @@ data: "yaxes": [ { "format": "short", - "label": "Events/min", + "label": null, "logBase": 1, "max": null, "min": null, @@ -1679,7 +1703,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -1695,12 +1719,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 35 + "h": 8, + "w": 6, + "x": 6, + "y": 6 }, - "id": 16, + "id": 38, "legend": { "avg": false, "current": false, @@ -1724,18 +1748,32 @@ data: "steppedLine": false, "targets": [ { - "expr": "rate(galley_source_kube_dynamic_converter_success_total[1m]) * 60", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}[1m]))", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{apiVersion=\"{{apiVersion}}\",group=\"{{group}}\",kind=\"{{kind}}\"}", + "intervalFactor": 2, + "legendFormat": "Total (k8s)", "refId": "A" + }, + { + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}[1m])) by (container_name)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ container_name }} (k8s)", + "refId": "B" + }, + { + "expr": "irate(process_cpu_seconds_total{job=\"galley\"}[1m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "galley (self-reported)", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Kubernetes Object Conversion Successes", + "title": "CPU", "tooltip": { "shared": true, "sort": 0, @@ -1752,7 +1790,7 @@ data: "yaxes": [ { "format": "short", - "label": "Conversions/min", + "label": null, "logBase": 1, "max": null, "min": null, @@ -1780,12 +1818,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 35 + "h": 8, + "w": 6, + "x": 12, + "y": 6 }, - "id": 24, + "id": 42, "legend": { "avg": false, "current": false, @@ -1809,18 +1847,25 @@ data: "steppedLine": false, "targets": [ { - "expr": "rate(galley_source_kube_dynamic_converter_failure_total[1m]) * 60", + "expr": "process_open_fds{job=\"galley\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Error", + "intervalFactor": 2, + "legendFormat": "Open FDs (galley)", "refId": "A" + }, + { + "expr": "container_fs_usage_bytes{job=\"kubernetes-cadvisor\",container_name=~\"galley\", pod_name=~\"istio-galley-.*\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ container_name }} ", + "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Kubernetes Object Conversion Failures", + "title": "Disk", "tooltip": { "shared": true, "sort": 0, @@ -1837,7 +1882,7 @@ data: "yaxes": [ { "format": "short", - "label": "Failures/min", + "label": null, "logBase": 1, "max": null, "min": null, @@ -1849,7 +1894,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -1857,19 +1902,6 @@ data: "alignLevel": null } }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 41 - }, - "id": 18, - "panels": [], - "title": "Mesh Configuration Protocol", - "type": "row" - }, { "aliasColors": {}, "bars": false, @@ -1878,12 +1910,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 42 + "h": 8, + "w": 6, + "x": 18, + "y": 6 }, - "id": 20, + "id": 44, "legend": { "avg": false, "current": false, @@ -1907,18 +1939,32 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(galley_mcp_source_clients_total)", + "expr": "go_goroutines{job=\"galley\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Clients", + "intervalFactor": 2, + "legendFormat": "goroutines_total", "refId": "A" + }, + { + "expr": "istio_mcp_clients_total{component=\"galley\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "clients_total", + "refId": "B" + }, + { + "expr": "go_goroutines{job=\"galley\"}/sum(istio_mcp_clients_total{component=\"galley\"}) without (component)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "avg_goroutines_per_client", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Connected Clients", + "title": "Goroutines", "tooltip": { "shared": true, "sort": 0, @@ -1955,6 +2001,19 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 10, + "panels": [], + "title": "Runtime", + "type": "row" + }, { "aliasColors": {}, "bars": false, @@ -1965,10 +2024,10 @@ data: "gridPos": { "h": 6, "w": 8, - "x": 8, - "y": 42 + "x": 0, + "y": 15 }, - "id": 22, + "id": 2, "legend": { "avg": false, "current": false, @@ -1992,18 +2051,32 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum by(collection)(irate(galley_mcp_source_request_acks_total[1m]) * 60)", + "expr": "sum(rate(galley_runtime_strategy_on_change_total[1m])) * 60", "format": "time_series", "intervalFactor": 1, - "legendFormat": "", + "legendFormat": "Strategy Change Events", "refId": "A" + }, + { + "expr": "sum(rate(galley_runtime_processor_events_processed_total[1m])) * 60", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Processed Events", + "refId": "B" + }, + { + "expr": "sum(rate(galley_runtime_processor_snapshots_published_total[1m])) * 60", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Snapshot Published", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Request ACKs", + "title": "Event Rates", "tooltip": { "shared": true, "sort": 0, @@ -2020,7 +2093,7 @@ data: "yaxes": [ { "format": "short", - "label": "ACKs/min", + "label": "Events/min", "logBase": 1, "max": null, "min": null, @@ -2028,7 +2101,7 @@ data: }, { "format": "short", - "label": null, + "label": "", "logBase": 1, "max": null, "min": null, @@ -2050,10 +2123,10 @@ data: "gridPos": { "h": 6, "w": 8, - "x": 16, - "y": 42 + "x": 8, + "y": 15 }, - "id": 26, + "id": 4, "legend": { "avg": false, "current": false, @@ -2077,17 +2150,32 @@ data: "steppedLine": false, "targets": [ { - "expr": "rate(galley_mcp_source_request_nacks_total[1m]) * 60", + "expr": "sum(rate(galley_runtime_strategy_timer_max_time_reached_total[1m])) * 60", "format": "time_series", "intervalFactor": 1, + "legendFormat": "Max Time Reached", "refId": "A" + }, + { + "expr": "sum(rate(galley_runtime_strategy_timer_quiesce_reached_total[1m])) * 60", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Quiesce Reached", + "refId": "B" + }, + { + "expr": "sum(rate(galley_runtime_strategy_timer_resets_total[1m])) * 60", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Timer Resets", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Request NACKs", + "title": "Timer Rates", "tooltip": { "shared": true, "sort": 0, @@ -2104,7 +2192,7 @@ data: "yaxes": [ { "format": "short", - "label": "NACKs/min", + "label": "Events/min", "logBase": 1, "max": null, "min": null, @@ -2123,887 +2211,584 @@ data: "align": false, "alignLevel": null } - } - ], - "refresh": "5s", - "schemaVersion": 16, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Istio Galley Dashboard", - "uid": "TSEY6jLmk", - "version": 1 -} -' ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-grafana-configuration-dashboards-istio-mesh-dashboard - namespace: istio-system - labels: - app: grafana - chart: grafana - heritage: Tiller - release: istio - istio: grafana -data: - istio-mesh-dashboard.json: '{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.2.3" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "5.0.0" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "table", - "name": "Table", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "text", - "name": "Text", - "version": "5.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "links": [], - "panels": [ - { - "content": "
\n
\n Istio\n
\n
\n Istio is an open platform that provides a uniform way to connect,\n manage, and \n secure microservices.\n
\n Need help? Join the Istio community.\n
\n
", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 0 - }, - "height": "50px", - "id": 13, - "links": [], - "mode": "html", - "style": { - "font-size": "18pt" - }, - "title": "", - "transparent": true, - "type": "text" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "Prometheus", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, + "fill": 1, "gridPos": { - "h": 3, - "w": 6, - "x": 0, - "y": 3 + "h": 6, + "w": 8, + "x": 16, + "y": 15 }, - "id": 20, - "interval": null, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, "links": [], - "mappingType": 1, - "mappingTypes": [ + "nullPointMode": "null", + "percentage": false, + "pointradius": 3, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ { - "name": "value to text", - "value": 1 + "expr": "histogram_quantile(0.50, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "P50", + "refId": "A" }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ + "expr": "histogram_quantile(0.90, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "P90", + "refId": "B" + }, { - "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\"}[1m])), 0.001)", + "expr": "histogram_quantile(0.95, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", + "format": "time_series", "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "Global Request Volume", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "legendFormat": "P95", + "refId": "C" + }, { - "op": "=", - "text": "N/A", - "value": "null" + "expr": "histogram_quantile(0.99, sum by (le) (galley_runtime_processor_snapshot_events_total_bucket))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "P99", + "refId": "D" } ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 80, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Events Per Snapshot", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" }, - "gridPos": { - "h": 3, - "w": 6, - "x": 6, - "y": 3 + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, - "id": 21, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ + "yaxes": [ { - "name": "value to text", - "value": 1 + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 21 }, - "tableColumn": "", + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "expr": "sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m]))", + "expr": "sum by (typeURL) (galley_runtime_state_type_instances_total)", "format": "time_series", "intervalFactor": 1, - "refId": "A", - "step": 4 + "legendFormat": "{{ typeURL }}", + "refId": "A" } ], - "thresholds": "95, 99, 99.5", - "title": "Global Success Rate (non-5xx responses)", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "State Type Instances", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "op": "=", - "text": "N/A", - "value": "null" + "format": "short", + "label": "Count", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "valueName": "avg" + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 27 }, + "id": 34, + "panels": [], + "title": "Validation", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, "gridPos": { - "h": 3, - "w": 6, - "x": 12, - "y": 3 + "h": 6, + "w": 8, + "x": 0, + "y": 28 }, - "id": 22, - "interval": null, + "id": 28, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, "links": [], - "mappingType": 1, - "mappingTypes": [ + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "name": "value to text", - "value": 1 + "expr": "galley_validation_cert_key_updates{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Key Updates", + "refId": "A" }, { - "name": "range to text", - "value": 2 + "expr": "galley_validation_cert_key_update_errors{job=\"galley\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Key Update Errors: {{ error }}", + "refId": "B" } ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Validation Webhook Certificate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" }, - "tableColumn": "", - "targets": [ + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"4.*\"}[1m])) ", - "format": "time_series", - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "4xxs", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, { - "op": "=", - "text": "N/A", - "value": "null" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "valueName": "avg" + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "Prometheus", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, + "fill": 1, "gridPos": { - "h": 3, - "w": 6, - "x": 18, - "y": 3 + "h": 6, + "w": 8, + "x": 8, + "y": 28 }, - "id": 23, - "interval": null, + "id": 30, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, "links": [], - "mappingType": 1, - "mappingTypes": [ + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "name": "value to text", - "value": 1 + "expr": "sum(galley_validation_passed{job=\"galley\"}) by (group, version, resource)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Passed: {{ group }}/{{ version }}/{{resource}}", + "refId": "A" }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"5.*\"}[1m])) ", + "expr": "sum(galley_validation_failed{job=\"galley\"}) by (group, version, resource, reason)", "format": "time_series", "intervalFactor": 1, - "refId": "A", - "step": 4 + "legendFormat": "Failed: {{ group }}/{{ version }}/{{resource}} ({{ reason}})", + "refId": "B" } ], - "thresholds": "", - "title": "5xxs", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Resource Validation", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "op": "=", - "text": "N/A", - "value": "null" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "valueName": "avg" + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "columns": [], + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "Prometheus", - "fontSize": "100%", + "fill": 1, "gridPos": { - "h": 21, - "w": 24, - "x": 0, - "y": 6 + "h": 6, + "w": 8, + "x": 16, + "y": 28 }, - "hideTimeOverride": false, - "id": 73, - "links": [], - "pageSize": null, - "repeat": null, - "repeatDirection": "v", - "scroll": true, - "showHeader": true, - "sort": { - "col": 4, - "desc": true + "id": 32, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false }, - "styles": [ + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "alias": "Workload", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Workload dashboard", - "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_2&var-workload=$__cell_", - "pattern": "destination_workload", - "preserveFormat": false, - "sanitize": false, - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Requests", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #A", - "thresholds": [], - "type": "number", - "unit": "ops" - }, - { - "alias": "P50 Latency", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #B", - "thresholds": [], - "type": "number", - "unit": "s" - }, - { - "alias": "P90 Latency", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #D", - "thresholds": [], - "type": "number", - "unit": "s" - }, - { - "alias": "P99 Latency", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #E", - "thresholds": [], - "type": "number", - "unit": "s" - }, - { - "alias": "Success Rate", - "colorMode": "cell", - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #F", - "thresholds": [ - ".95", - " 1.00" - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "$__cell dashboard", - "linkUrl": "/dashboard/db/istio-workload-dashboard?var-workload=$__cell_2&var-namespace=$__cell_3", - "pattern": "destination_workload_var", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "Service", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "$__cell dashboard", - "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell", - "pattern": "destination_service", - "thresholds": [], - "type": "string", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "destination_workload_namespace", - "thresholds": [], - "type": "hidden", - "unit": "short" - } - ], - "targets": [ - { - "expr": "label_join(sum(rate(istio_requests_total{reporter=\"destination\", response_code=\"200\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, + "expr": "sum(galley_validation_http_error{job=\"galley\"}) by (status)", + "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}", + "legendFormat": "{{ status }}", "refId": "A" - }, - { - "expr": "label_join(histogram_quantile(0.50, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}", - "refId": "B" - }, - { - "expr": "label_join(histogram_quantile(0.90, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", - "refId": "D" - }, + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Validation HTTP Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "expr": "label_join(histogram_quantile(0.99, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", - "refId": "E" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "expr": "label_join((sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) by (destination_workload, destination_workload_namespace) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m])) by (destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", - "refId": "F" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "timeFrom": null, - "title": "HTTP/GRPC Workloads", - "transform": "table", - "transparent": false, - "type": "table" + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "columns": [], - "datasource": "Prometheus", - "fontSize": "100%", + "collapsed": false, "gridPos": { - "h": 18, + "h": 1, "w": 24, "x": 0, - "y": 27 + "y": 34 }, - "hideTimeOverride": false, - "id": 109, - "links": [], - "pageSize": null, - "repeatDirection": "v", - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true + "id": 12, + "panels": [], + "title": "Kubernetes Source", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 8, + "x": 0, + "y": 35 }, - "styles": [ - { - "alias": "Workload", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "$__cell dashboard", - "linkUrl": "/dashboard/db/istio-tcp-workload-dashboard?var-namespace=$__cell_2&&var-workload=$__cell", - "pattern": "destination_workload", - "preserveFormat": false, - "sanitize": false, - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Bytes Sent", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #A", - "thresholds": [ - "" - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Bytes Received", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #C", - "thresholds": [], - "type": "number", - "unit": "Bps" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "$__cell dashboard", - "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_3&var-workload=$__cell_2", - "pattern": "destination_workload_var", - "thresholds": [], - "type": "string", - "unit": "short" - }, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "destination_workload_namespace", - "thresholds": [], - "type": "hidden", - "unit": "short" + "expr": "rate(galley_source_kube_event_success_total[1m]) * 60", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Success", + "refId": "A" }, { - "alias": "Service", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "$__cell dashboard", - "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell", - "pattern": "destination_service", - "thresholds": [], - "type": "number", - "unit": "short" + "expr": "rate(galley_source_kube_event_error_total[1m]) * 60", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Error", + "refId": "B" } ], - "targets": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Source Event Rate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "expr": "label_join(sum(rate(istio_tcp_received_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}", - "refId": "C" + "format": "short", + "label": "Events/min", + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "expr": "label_join(sum(rate(istio_tcp_sent_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}", - "refId": "A" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "timeFrom": null, - "title": "TCP Workloads", - "transform": "table", - "transparent": false, - "type": "table" + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, @@ -3013,19 +2798,17 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 45 + "h": 6, + "w": 8, + "x": 8, + "y": 35 }, - "id": 111, + "id": 16, "legend": { - "alignAsTable": false, "avg": false, "current": false, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -3044,23 +2827,23 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(istio_build) by (component, tag)", + "expr": "rate(galley_source_kube_dynamic_converter_success_total[1m]) * 60", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ component }}: {{ tag }}", + "legendFormat": "{apiVersion=\"{{apiVersion}}\",group=\"{{group}}\",kind=\"{{kind}}\"}", "refId": "A" } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Istio Components by Version", + "title": "Kubernetes Object Conversion Successes", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, - "transparent": false, "type": "graph", "xaxis": { "buckets": null, @@ -3072,7 +2855,7 @@ data: "yaxes": [ { "format": "short", - "label": null, + "label": "Conversions/min", "logBase": 1, "max": null, "min": null, @@ -3084,146 +2867,28 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { "align": false, "alignLevel": null } - } - ], - "refresh": "5s", - "schemaVersion": 16, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "Istio Mesh Dashboard", - "version": 4 -} -' ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-grafana-configuration-dashboards-istio-performance-dashboard - namespace: istio-system - labels: - app: grafana - chart: grafana - heritage: Tiller - release: istio - istio: grafana -data: - istio-performance-dashboard.json: '{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "id": 9, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 21, - "panels": [ - { - "content": "The charts on this dashboard are intended to show Istio main components cost in terms resources utilization under steady load.\n\n- **vCPU/1k rps:** shows vCPU utilization by the main Istio components normalized by 1000 requests/second. When idle or low traffic, this chart will be blank. The curve for istio-proxy refers to the services sidecars only.\n- **vCPU:** vCPU utilization by Istio components, not normalized.\n- **Memory:** memory footprint for the components. Telemetry and policy are normalized by 1k rps, and no data is shown when there is no traffic. For ingress and istio-proxy, the data is per instance.\n- **Bytes transferred/ sec:** shows the number of bytes flowing through each Istio component.\n\n\n", - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 19, - "links": [], - "mode": "markdown", - "timeFrom": null, - "timeShift": null, - "title": "Performance Dashboard README", - "transparent": true, - "type": "text" - } - ], - "title": "Performance Dashboard Notes", - "type": "row" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 6, - "panels": [], - "title": "vCPU Usage", - "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, + "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 2 + "h": 6, + "w": 8, + "x": 16, + "y": 35 }, - "id": 4, + "id": 24, "legend": { "avg": false, "current": false, @@ -3238,7 +2903,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 2, + "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -3247,41 +2912,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "expr": "rate(galley_source_kube_dynamic_converter_failure_total[1m]) * 60", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "istio-telemetry", + "legendFormat": "Error", "refId": "A" - }, - { - "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name=\"istio-proxy\"}[1m])) / (round(sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m])), 0.001)/1000))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "istio-ingressgateway", - "refId": "B" - }, - { - "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-proxy", - "refId": "C" - }, - { - "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-policy", - "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "vCPU / 1k rps", + "title": "Kubernetes Object Conversion Failures", "tooltip": { "shared": true, "sort": 0, @@ -3298,7 +2940,7 @@ data: "yaxes": [ { "format": "short", - "label": null, + "label": "Failures/min", "logBase": 1, "max": null, "min": null, @@ -3318,19 +2960,33 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 41 + }, + "id": 18, + "panels": [], + "title": "Mesh Configuration Protocol", + "type": "row" + }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, + "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 2 + "h": 6, + "w": 8, + "x": 0, + "y": 42 }, - "id": 7, + "id": 20, "legend": { "avg": false, "current": false, @@ -3345,7 +3001,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 2, + "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -3354,39 +3010,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))", + "expr": "sum(istio_mcp_clients_total{component=\"galley\"})", "format": "time_series", "intervalFactor": 1, - "legendFormat": "istio-telemetry", + "legendFormat": "Clients", "refId": "A" - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name=\"istio-proxy\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-ingressgateway", - "refId": "B" - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-proxy", - "refId": "C" - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-policy", - "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "vCPU", + "title": "Connected Clients", "tooltip": { "shared": true, "sort": 0, @@ -3423,32 +3058,20 @@ data: "alignLevel": null } }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 13, - "panels": [], - "title": "Memory and Data Rates", - "type": "row" - }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, + "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 11 + "h": 6, + "w": 8, + "x": 8, + "y": 42 }, - "id": 902, + "id": 22, "legend": { "avg": false, "current": false, @@ -3463,7 +3086,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 2, + "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -3472,39 +3095,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "(sum(container_memory_usage_bytes{pod_name=~\"istio-telemetry-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000)) / (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "expr": "sum by(collection)(irate(istio_mcp_request_acks_total{component=\"galley\"}[1m]) * 60)", "format": "time_series", "intervalFactor": 1, - "legendFormat": "istio-telemetry / 1k rps", + "legendFormat": "", "refId": "A" - }, - { - "expr": "sum(container_memory_usage_bytes{pod_name=~\"istio-ingressgateway-.*\"}) / count(container_memory_usage_bytes{pod_name=~\"istio-ingressgateway-.*\",container_name!=\"POD\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "per istio-ingressgateway", - "refId": "B" - }, - { - "expr": "sum(container_memory_usage_bytes{namespace!=\"istio-system\",container_name=\"istio-proxy\"}) / count(container_memory_usage_bytes{namespace!=\"istio-system\",container_name=\"istio-proxy\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "per istio proxy", - "refId": "C" - }, - { - "expr": "(sum(container_memory_usage_bytes{pod_name=~\"istio-policy-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-policy / 1k rps", - "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Memory Usage", + "title": "Request ACKs", "tooltip": { "shared": true, "sort": 0, @@ -3520,8 +3122,8 @@ data: }, "yaxes": [ { - "format": "bytes", - "label": null, + "format": "short", + "label": "ACKs/min", "logBase": 1, "max": null, "min": null, @@ -3546,14 +3148,15 @@ data: "bars": false, "dashLength": 10, "dashes": false, + "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 11 + "h": 6, + "w": 8, + "x": 16, + "y": 42 }, - "id": 11, + "id": 26, "legend": { "avg": false, "current": false, @@ -3568,7 +3171,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 2, + "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -3577,39 +3180,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-telemetry\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-telemetry\"}[1m]))", + "expr": "rate(istio_mcp_request_nacks_total{component=\"galley\"}[1m]) * 60", "format": "time_series", "intervalFactor": 1, - "legendFormat": "istio-telemetry", "refId": "A" - }, - { - "expr": "sum(irate(istio_response_bytes_sum{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-ingressgateway", - "refId": "B" - }, - { - "expr": "sum(irate(istio_response_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_response_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m])) + sum(irate(istio_request_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio-proxy", - "refId": "C" - }, - { - "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-policy\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-policy\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "istio_policy", - "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Bytes transferred / sec", + "title": "Request NACKs", "tooltip": { "shared": true, "sort": 0, @@ -3625,8 +3206,8 @@ data: }, "yaxes": [ { - "format": "Bps", - "label": null, + "format": "short", + "label": "NACKs/min", "logBase": 1, "max": null, "min": null, @@ -3645,1201 +3226,1158 @@ data: "align": false, "alignLevel": null } - }, + } + ], + "refresh": "5s", + "schemaVersion": 16, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Galley Dashboard", + "uid": "TSEY6jLmk", + "version": 1 +} +' +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: istio-grafana-configuration-dashboards-istio-mesh-dashboard + namespace: istio-system + labels: + app: grafana + chart: grafana + heritage: Tiller + release: istio + istio: grafana +data: + istio-mesh-dashboard.json: '{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "links": [], + "panels": [ { - "collapsed": false, + "content": "
\n
\n Istio\n
\n
\n Istio is an open platform that provides a uniform way to connect,\n manage, and \n secure microservices.\n
\n Need help? Join the Istio community.\n
\n
", "gridPos": { - "h": 1, + "h": 3, "w": 24, "x": 0, - "y": 19 + "y": 0 }, - "id": 17, - "panels": [], - "title": "Istio Component Versions", - "type": "row" + "height": "50px", + "id": 13, + "links": [], + "mode": "html", + "style": { + "font-size": "18pt" + }, + "title": "", + "transparent": true, + "type": "text" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "fill": 1, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 8, - "w": 24, + "h": 3, + "w": 6, "x": 0, - "y": 20 - }, - "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 3 }, - "lines": true, - "linewidth": 1, + "id": 20, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(istio_build) by (component, tag)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ component }}: {{ tag }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Istio Components by Version", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + "mappingType": 1, + "mappingTypes": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "name": "value to text", + "value": 1 }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "name": "range to text", + "value": 2 } ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 31 - }, - "id": 71, - "panels": [], - "title": "Proxy Resource Usage", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 32 - }, - "id": 72, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ { - "expr": "sum(container_memory_usage_bytes{container_name=\"istio-proxy\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 + "from": "null", + "text": "N/A", + "to": "null" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true }, - "yaxes": [ + "tableColumn": "", + "targets": [ { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\"}[1m])), 0.001)", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Global Request Volume", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "valueName": "avg" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], "datasource": "Prometheus", - "fill": 1, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 80, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, "gridPos": { - "h": 7, + "h": 3, "w": 6, "x": 6, - "y": 32 - }, - "id": 73, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 3 }, - "lines": true, - "linewidth": 1, + "id": 21, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=\"istio-proxy\"}[1m]))", + "expr": "sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m]))", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", + "intervalFactor": 1, "refId": "A", - "step": 2 + "step": 4 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "vCPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "thresholds": "95, 99, 99.5", + "title": "Global Success Rate (non-5xx responses)", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "valueName": "avg" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 7, + "h": 3, "w": 6, "x": 12, - "y": 32 - }, - "id": 702, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 3 }, - "lines": true, - "linewidth": 1, + "id": 22, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ + "mappingType": 1, + "mappingTypes": [ { - "expr": "sum(container_fs_usage_bytes{container_name=\"istio-proxy\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ container_name }}", - "refId": "B", - "step": 2 + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true }, - "yaxes": [ + "tableColumn": "", + "targets": [ { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"4.*\"}[1m])) ", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "4xxs", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "decimals": null, - "format": "none", - "label": "", - "logBase": 1024, - "max": null, - "min": null, - "show": false + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 39 - }, - "id": 69, - "panels": [], - "title": "Pilot Resource Usage", - "type": "row" + "valueName": "avg" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], "datasource": "Prometheus", - "fill": 1, + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 7, + "h": 3, "w": 6, - "x": 0, - "y": 40 - }, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "x": 18, + "y": 3 }, - "lines": true, - "linewidth": 1, + "id": 23, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_virtual_memory_bytes{job=\"pilot\"}", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "Virtual Memory", - "refId": "I", - "step": 2 - }, + "mappingType": 1, + "mappingTypes": [ { - "expr": "process_resident_memory_bytes{job=\"pilot\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Resident Memory", - "refId": "H", - "step": 2 + "name": "value to text", + "value": 1 }, { - "expr": "go_memstats_heap_sys_bytes{job=\"pilot\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap sys", - "refId": "A" - }, + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ { - "expr": "go_memstats_heap_alloc_bytes{job=\"pilot\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap alloc", - "refId": "D" - }, + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ { - "expr": "go_memstats_alloc_bytes{job=\"pilot\"}", + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", response_code=~\"5.*\"}[1m])) ", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Alloc", - "refId": "F", - "step": 2 - }, + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "5xxs", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "expr": "go_memstats_heap_inuse_bytes{job=\"pilot\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Heap in-use", - "refId": "E", - "step": 2 - }, + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 6 + }, + "id": 113, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ { - "expr": "go_memstats_stack_inuse_bytes{job=\"pilot\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Stack in-use", - "refId": "G", - "step": 2 + "name": "value to text", + "value": 1 }, { - "expr": "sum(container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", - "refId": "C", - "step": 2 - }, + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ { - "expr": "container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}", + "expr": "sum(galley_istio_networking_virtualservices) / count(up{job=\"galley\"})", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 + "intervalFactor": 1, + "refId": "A" } ], - "thresholds": [], + "thresholds": "", "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "title": "Virtual Services", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "valueName": "current" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 7, + "h": 3, "w": 6, "x": 6, - "y": 40 - }, - "id": 602, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 6 }, - "lines": true, - "linewidth": 1, + "id": 114, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ + "mappingType": 1, + "mappingTypes": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", - "refId": "A", - "step": 2 + "name": "value to text", + "value": 1 }, { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m])) by (container_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 - }, + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ { - "expr": "irate(process_cpu_seconds_total{job=\"pilot\"}[1m])", + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(galley_istio_networking_destinationrules) / count(up{job=\"galley\"})", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "pilot (self-reported)", - "refId": "C", - "step": 2 + "intervalFactor": 1, + "refId": "A" } ], - "thresholds": [], + "thresholds": "", "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "vCPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "title": "Destination Rules", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "valueName": "current" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 7, + "h": 3, "w": 6, "x": 12, - "y": 40 - }, - "id": 74, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 6 }, - "lines": true, - "linewidth": 1, + "id": 115, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ + "mappingType": 1, + "mappingTypes": [ { - "expr": "process_open_fds{job=\"pilot\"}", - "format": "time_series", - "hide": true, - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Open FDs (pilot)", - "refId": "A" + "name": "value to text", + "value": 1 }, { - "expr": "container_fs_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}", + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(galley_istio_networking_gateways) / count(up{job=\"galley\"})", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ container_name }}", - "refId": "B", - "step": 2 + "intervalFactor": 1, + "refId": "A" } ], - "thresholds": [], + "thresholds": "", "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Disk", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "title": "Gateways", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "decimals": null, - "format": "none", - "label": "", - "logBase": 1024, - "max": null, - "min": null, - "show": false + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "valueName": "current" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 7, + "h": 3, "w": 6, "x": 18, - "y": 40 - }, - "id": 402, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false + "y": 6 }, - "lines": true, - "linewidth": 1, + "id": 116, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", "targets": [ { - "expr": "go_goroutines{job=\"pilot\"}", + "expr": "sum(galley_istio_authentication_meshpolicies) / count(up{job=\"galley\"})", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Number of Goroutines", - "refId": "A", - "step": 2 + "hide": false, + "intervalFactor": 1, + "refId": "A" } ], - "thresholds": [], + "thresholds": "", "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, + "title": "Authentication Mesh Policies", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "op": "=", + "text": "N/A", + "value": "null" } ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 47 - }, - "id": 93, - "panels": [], - "title": "Mixer Resource Usage", - "type": "row" + "valueName": "current" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "columns": [], "datasource": "Prometheus", - "fill": 1, + "fontSize": "100%", "gridPos": { - "h": 7, - "w": 6, + "h": 21, + "w": 24, "x": 0, - "y": 48 - }, - "id": 94, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "y": 9 }, - "lines": true, - "linewidth": 1, + "hideTimeOverride": false, + "id": 73, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "Virtual Memory", - "refId": "I", - "step": 2 - }, + "pageSize": null, + "repeat": null, + "repeatDirection": "v", + "scroll": true, + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ { - "expr": "process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Resident Memory", - "refId": "H", - "step": 2 + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": false, + "linkTargetBlank": false, + "linkTooltip": "Workload dashboard", + "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_2&var-workload=$__cell_", + "pattern": "destination_workload", + "preserveFormat": false, + "sanitize": false, + "thresholds": [], + "type": "hidden", + "unit": "short" }, { - "expr": "go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap sys", - "refId": "A" + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" }, { - "expr": "go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap alloc", - "refId": "D" + "alias": "Requests", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #A", + "thresholds": [], + "type": "number", + "unit": "ops" }, { - "expr": "go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Alloc", - "refId": "F", - "step": 2 + "alias": "P50 Latency", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #B", + "thresholds": [], + "type": "number", + "unit": "s" }, { - "expr": "go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Heap in-use", - "refId": "E", - "step": 2 + "alias": "P90 Latency", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #D", + "thresholds": [], + "type": "number", + "unit": "s" }, { - "expr": "go_memstats_stack_inuse_bytes{job=~\"istio-policy|istio-telemetry\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Stack in-use", - "refId": "G", - "step": 2 + "alias": "P99 Latency", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #E", + "thresholds": [], + "type": "number", + "unit": "s" }, { - "expr": "sum(container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", - "refId": "C", - "step": 2 + "alias": "Success Rate", + "colorMode": "cell", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #F", + "thresholds": [ + ".95", + " 1.00" + ], + "type": "number", + "unit": "percentunit" }, { - "expr": "container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-workload-dashboard?var-workload=$__cell_2&var-namespace=$__cell_3", + "pattern": "destination_workload_var", + "thresholds": [], + "type": "number", + "unit": "short" + }, { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "alias": "Service", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell", + "pattern": "destination_service", + "thresholds": [], + "type": "string", + "unit": "short" }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "destination_workload_namespace", + "thresholds": [], + "type": "hidden", + "unit": "short" } ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, - "gridPos": { - "h": 7, - "w": 6, - "x": 6, - "y": 48 - }, - "id": 95, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}[1m]))", - "format": "time_series", + "expr": "label_join(sum(rate(istio_requests_total{reporter=\"destination\", response_code=\"200\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", - "refId": "A", - "step": 2 + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}", + "refId": "A" }, { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}[1m])) by (container_name)", - "format": "time_series", + "expr": "label_join((histogram_quantile(0.50, sum(rate(istio_request_duration_milliseconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)) / 1000) or histogram_quantile(0.50, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload}}.{{ destination_workload_namespace }}", + "refId": "B" }, { - "expr": "irate(process_cpu_seconds_total{job=~\"istio-policy|istio-telemetry\"}[1m])", - "format": "time_series", + "expr": "label_join((histogram_quantile(0.90, sum(rate(istio_request_duration_milliseconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)) / 1000) or histogram_quantile(0.90, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", "hide": false, - "intervalFactor": 2, - "legendFormat": "mixer (self-reported)", - "refId": "C", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "vCPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "D" + }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "expr": "label_join((histogram_quantile(0.99, sum(rate(istio_request_duration_milliseconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)) / 1000) or histogram_quantile(0.99, sum(rate(istio_request_duration_seconds_bucket{reporter=\"destination\"}[1m])) by (le, destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "E" }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "expr": "label_join((sum(rate(istio_requests_total{reporter=\"destination\", response_code!~\"5.*\"}[1m])) by (destination_workload, destination_workload_namespace) / sum(rate(istio_requests_total{reporter=\"destination\"}[1m])) by (destination_workload, destination_workload_namespace)), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "F" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "timeFrom": null, + "title": "HTTP/GRPC Workloads", + "transform": "table", + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "columns": [], "datasource": "Prometheus", - "fill": 1, + "fontSize": "100%", "gridPos": { - "h": 7, - "w": 6, - "x": 12, - "y": 48 - }, - "id": 96, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "h": 18, + "w": 24, + "x": 0, + "y": 30 }, - "lines": true, - "linewidth": 1, + "hideTimeOverride": false, + "id": 109, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_open_fds{job=~\"istio-policy|istio-telemetry\"}", - "format": "time_series", - "hide": true, - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Open FDs (pilot)", - "refId": "A" + "pageSize": null, + "repeatDirection": "v", + "scroll": true, + "showHeader": true, + "sort": { + "col": 2, + "desc": true + }, + "styles": [ + { + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": false, + "linkTargetBlank": false, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-tcp-workload-dashboard?var-namespace=$__cell_2&&var-workload=$__cell", + "pattern": "destination_workload", + "preserveFormat": false, + "sanitize": false, + "thresholds": [], + "type": "hidden", + "unit": "short" }, { - "expr": "container_fs_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ container_name }}", - "refId": "B", - "step": 2 + "alias": "Bytes Sent", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #A", + "thresholds": [ + "" + ], + "type": "number", + "unit": "Bps" + }, + { + "alias": "Bytes Received", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Value #C", + "thresholds": [], + "type": "number", + "unit": "Bps" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "Time", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Workload", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-workload-dashboard?var-namespace=$__cell_3&var-workload=$__cell_2", + "pattern": "destination_workload_var", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "pattern": "destination_workload_namespace", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "Service", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": true, + "linkTooltip": "$__cell dashboard", + "linkUrl": "/dashboard/db/istio-service-dashboard?var-service=$__cell", + "pattern": "destination_service", + "thresholds": [], + "type": "number", + "unit": "short" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ + "targets": [ { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true + "expr": "label_join(sum(rate(istio_tcp_received_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}", + "refId": "C" }, { - "decimals": null, - "format": "none", - "label": "", - "logBase": 1024, - "max": null, - "min": null, - "show": false + "expr": "label_join(sum(rate(istio_tcp_sent_bytes_total{reporter=\"source\"}[1m])) by (destination_workload, destination_workload_namespace, destination_service), \"destination_workload_var\", \".\", \"destination_workload\", \"destination_workload_namespace\")", + "format": "table", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}", + "refId": "A" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "timeFrom": null, + "title": "TCP Workloads", + "transform": "table", + "type": "table" }, { "aliasColors": {}, @@ -4849,18 +4387,20 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 6, - "x": 18, + "h": 9, + "w": 24, + "x": 0, "y": 48 }, - "id": 97, + "id": 111, "legend": { + "alignAsTable": false, "avg": false, "current": false, "max": false, "min": false, - "show": false, + "rightSide": false, + "show": true, "total": false, "values": false }, @@ -4878,19 +4418,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "go_goroutines{job=\"istio-telemetry\"}", + "expr": "sum(istio_build) by (component, tag)", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Number of Goroutines", - "refId": "A", - "step": 2 + "intervalFactor": 1, + "legendFormat": "{{ component }}: {{ tag }}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Goroutines", + "title": "Istio Components by Version", "tooltip": { "shared": true, "sort": 0, @@ -4907,7 +4446,7 @@ data: "yaxes": [ { "format": "short", - "label": "", + "label": null, "logBase": 1, "max": null, "min": null, @@ -4919,7 +4458,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -4928,7 +4467,7 @@ data: } } ], - "refresh": "10s", + "refresh": "5s", "schemaVersion": 18, "style": "dark", "tags": [], @@ -4964,17 +4503,17 @@ data: "30d" ] }, - "timezone": "", - "title": "Istio Performance Dashboard", - "uid": "vu8e0VWZk", - "version": 22 + "timezone": "browser", + "title": "Istio Mesh Dashboard", + "uid": "G8wLrJIZk", + "version": 5 } ' --- apiVersion: v1 kind: ConfigMap metadata: - name: istio-grafana-configuration-dashboards-istio-service-dashboard + name: istio-grafana-configuration-dashboards-istio-performance-dashboard namespace: istio-system labels: app: grafana @@ -4983,7 +4522,7 @@ metadata: release: istio istio: grafana data: - istio-service-dashboard.json: '{ + istio-performance-dashboard.json: '{ "annotations": { "list": [ { @@ -5000,211 +4539,71 @@ data: "editable": false, "gnetId": null, "graphTooltip": 0, - "iteration": 1536442501501, + "id": 9, "links": [], "panels": [ { - "content": "
\nSERVICE: $service\n
", + "collapsed": true, "gridPos": { - "h": 3, + "h": 1, "w": 24, "x": 0, "y": 0 }, - "id": 89, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 0, - "y": 3 - }, - "id": 12, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "round(sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\"}[5m])), 0.001)", - "format": "time_series", - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "Client Request Volume", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "id": 21, + "panels": [ { - "op": "=", - "text": "N/A", - "value": "null" + "content": "The charts on this dashboard are intended to show Istio main components cost in terms resources utilization under steady load.\n\n- **vCPU/1k rps:** shows vCPU utilization by the main Istio components normalized by 1000 requests/second. When idle or low traffic, this chart will be blank. The curve for istio-proxy refers to the services sidecars only.\n- **vCPU:** vCPU utilization by Istio components, not normalized.\n- **Memory:** memory footprint for the components. Telemetry and policy are normalized by 1k rps, and no data is shown when there is no traffic. For ingress and istio-proxy, the data is per instance.\n- **Bytes transferred/ sec:** shows the number of bytes flowing through each Istio component.\n\n\n", + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 19, + "links": [], + "mode": "markdown", + "timeFrom": null, + "timeShift": null, + "title": "Performance Dashboard README", + "transparent": true, + "type": "text" } ], - "valueName": "current" + "title": "Performance Dashboard Notes", + "type": "row" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": null, - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 80, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, + "collapsed": false, "gridPos": { - "h": 4, - "w": 6, - "x": 6, - "y": 3 - }, - "id": 14, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true + "h": 1, + "w": 24, + "x": 0, + "y": 1 }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\"}[5m]))", - "format": "time_series", - "intervalFactor": 1, - "refId": "B" - } - ], - "thresholds": "95, 99, 99.5", - "title": "Client Success Rate (non-5xx responses)", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" + "id": 6, + "panels": [], + "title": "vCPU Usage", + "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 4, - "w": 6, - "x": 12, - "y": 3 + "h": 8, + "w": 12, + "x": 0, + "y": 2 }, - "id": 87, + "id": 4, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": false, - "hideZero": false, "max": false, "min": false, - "rightSide": true, "show": true, "total": false, "values": false @@ -5214,7 +4613,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -5223,34 +4622,41 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))", + "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", "format": "time_series", - "interval": "", + "hide": false, "intervalFactor": 1, - "legendFormat": "P50", + "legendFormat": "istio-telemetry", "refId": "A" }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))", + "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name=\"istio-proxy\"}[1m])) / (round(sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m])), 0.001)/1000))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "P90", + "legendFormat": "istio-ingressgateway", "refId": "B" }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))", + "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "P99", + "legendFormat": "istio-proxy", "refId": "C" + }, + { + "expr": "(sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))/ (round(sum(irate(istio_requests_total[1m])), 0.001)/1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-policy", + "refId": "D" } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Client Request Duration", + "title": "vCPU / 1k rps", "tooltip": { "shared": true, "sort": 0, @@ -5266,7 +4672,7 @@ data: }, "yaxes": [ { - "format": "s", + "format": "short", "label": null, "logBase": 1, "max": null, @@ -5279,7 +4685,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -5288,275 +4694,246 @@ data: } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "Bps", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "fill": 1, "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 3 + "h": 8, + "w": 12, + "x": 12, + "y": 2 }, - "id": 84, - "interval": null, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, "links": [], - "mappingType": 1, - "mappingTypes": [ + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "name": "value to text", - "value": 1 + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-telemetry", + "refId": "A" }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name=\"istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-ingressgateway", + "refId": "B" + }, { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-proxy", + "refId": "C" + }, { - "expr": "sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", destination_service=~\"$service\"}[1m]))", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\",container_name=~\"mixer|istio-proxy\"}[1m]))", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "", - "refId": "A" + "legendFormat": "istio-policy", + "refId": "D" } ], - "thresholds": "", - "title": "TCP Received Bytes", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "vCPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "op": "=", - "text": "N/A", - "value": "null" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "valueName": "avg" + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 10 }, + "id": 13, + "panels": [], + "title": "Memory and Data Rates", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "fill": 1, "gridPos": { - "h": 4, - "w": 6, + "h": 8, + "w": 12, "x": 0, - "y": 7 + "y": 11 }, - "id": 97, - "interval": null, + "id": 902, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, "links": [], - "mappingType": 1, - "mappingTypes": [ + "nullPointMode": "null", + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "name": "value to text", - "value": 1 + "expr": "(sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",pod_name=~\"istio-telemetry-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000)) / (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio-telemetry / 1k rps", + "refId": "A" }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ + "expr": "sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\"}) / count(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",pod_name=~\"istio-ingressgateway-.*\",container_name!=\"POD\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "per istio-ingressgateway", + "refId": "B" + }, { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ + "expr": "sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"}) / count(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",namespace!=\"istio-system\",container_name=\"istio-proxy\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "per istio proxy", + "refId": "C" + }, { - "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\"}[5m])), 0.001)", + "expr": "(sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",pod_name=~\"istio-policy-.*\"}) / (sum(irate(istio_requests_total[1m])) / 1000))/ (sum(irate(istio_requests_total{source_workload=\"istio-ingressgateway\"}[1m])) >bool 10)", "format": "time_series", "intervalFactor": 1, - "refId": "A", - "step": 4 + "legendFormat": "istio-policy / 1k rps", + "refId": "D" } ], - "thresholds": "", - "title": "Server Request Volume", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": null, - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 80, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 6, - "y": 7 - }, - "id": 98, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\"}[5m]))", - "format": "time_series", - "intervalFactor": 1, - "refId": "B" - } - ], - "thresholds": "95, 99, 99.5", - "title": "Server Success Rate (non-5xx responses)", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true } ], - "valueName": "avg" + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 4, - "w": 6, + "h": 8, + "w": 12, "x": 12, - "y": 7 + "y": 11 }, - "id": 99, + "id": 11, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": false, - "hideZero": false, "max": false, "min": false, - "rightSide": true, "show": true, "total": false, "values": false @@ -5566,7 +4943,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -5575,34 +4952,39 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))", + "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-telemetry\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-telemetry\"}[1m]))", "format": "time_series", - "interval": "", "intervalFactor": 1, - "legendFormat": "P50", + "legendFormat": "istio-telemetry", "refId": "A" }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))", + "expr": "sum(irate(istio_response_bytes_sum{source_workload=\"istio-ingressgateway\", reporter=\"source\"}[1m]))", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "P90", + "legendFormat": "istio-ingressgateway", "refId": "B" }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))", + "expr": "sum(irate(istio_response_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_response_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m])) + sum(irate(istio_request_bytes_sum{source_workload_namespace!=\"istio-system\", reporter=\"source\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload_namespace!=\"istio-system\", reporter=\"destination\"}[1m]))", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "P99", + "legendFormat": "istio-proxy", "refId": "C" + }, + { + "expr": "sum(irate(istio_response_bytes_sum{destination_workload=\"istio-policy\"}[1m])) + sum(irate(istio_request_bytes_sum{destination_workload=\"istio-policy\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "istio_policy", + "refId": "D" } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Server Request Duration", + "title": "Bytes transferred / sec", "tooltip": { "shared": true, "sort": 0, @@ -5618,7 +5000,7 @@ data: }, "yaxes": [ { - "format": "s", + "format": "Bps", "label": null, "logBase": 1, "max": null, @@ -5631,7 +5013,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -5640,121 +5022,34 @@ data: } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "Bps", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 7 - }, - "id": 100, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"source\", destination_service=~\"$service\"}[1m])) ", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "TCP Sent Bytes", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "content": "
\nCLIENT WORKLOADS\n
", + "collapsed": false, "gridPos": { - "h": 3, + "h": 1, "w": 24, "x": 0, - "y": 11 + "y": 19 }, - "id": 45, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" + "id": 17, + "panels": [], + "title": "Istio Component Versions", + "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", - "fill": 0, + "fill": 1, "gridPos": { - "h": 6, - "w": 12, + "h": 8, + "w": 24, "x": 0, - "y": 14 + "y": 20 }, - "id": 25, + "id": 15, "legend": { "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, "show": true, @@ -5764,9 +5059,9 @@ data: "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null as zero", + "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -5775,29 +5070,20 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\",destination_service=~\"$service\",reporter=\"source\",source_workload=~\"$srcwl\",source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", + "expr": "sum(istio_build) by (component, tag)", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} (🔐mTLS)", - "refId": "B", - "step": 2 - }, - { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", reporter=\"source\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }}", - "refId": "A", - "step": 2 + "legendFormat": "{{ component }}: {{ tag }}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Requests by Source And Response Code", + "title": "Istio Components by Version", "tooltip": { - "shared": false, + "shared": true, "sort": 0, "value_type": "individual" }, @@ -5807,17 +5093,15 @@ data: "mode": "time", "name": null, "show": true, - "values": [ - "total" - ] + "values": [] }, "yaxes": [ { - "format": "ops", + "format": "short", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -5826,7 +5110,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -5834,6 +5118,19 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 71, + "panels": [], + "title": "Proxy Resource Usage", + "type": "row" + }, { "aliasColors": {}, "bars": false, @@ -5842,17 +5139,15 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 14 + "h": 7, + "w": 6, + "x": 0, + "y": 32 }, - "id": 26, + "id": 72, "legend": { "avg": false, "current": false, - "hideEmpty": true, - "hideZero": false, "max": false, "min": false, "show": true, @@ -5873,28 +5168,20 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} (🔐mTLS)", - "refId": "A", - "step": 2 - }, - { - "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", + "expr": "sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",container_name=\"istio-proxy\"})", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }}", + "intervalFactor": 2, + "legendFormat": "{{ container_name }} (k8s)", "refId": "B", "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Success Rate (non-5xx responses) By Source", + "title": "Memory", "tooltip": { "shared": true, "sort": 0, @@ -5910,11 +5197,11 @@ data: }, "yaxes": [ { - "format": "percentunit", + "format": "bytes", "label": null, "logBase": 1, - "max": "1.01", - "min": "0", + "max": null, + "min": null, "show": true }, { @@ -5937,24 +5224,19 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "description": "", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 20 + "h": 7, + "w": 6, + "x": 6, + "y": 32 }, - "id": 27, + "id": 73, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, - "hideZero": false, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -5973,82 +5255,20 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=\"istio-proxy\"}[1m]))", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "Total (k8s)", "refId": "A", "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", - "refId": "B", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", - "refId": "H", - "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Request Duration by Source", + "title": "vCPU", "tooltip": { "shared": true, "sort": 0, @@ -6064,11 +5284,11 @@ data: }, "yaxes": [ { - "format": "s", + "format": "short", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -6077,7 +5297,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -6093,20 +5313,17 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 20 + "h": 7, + "w": 6, + "x": 12, + "y": 32 }, - "id": 28, + "id": 702, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -6125,82 +5342,19 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", - "refId": "A", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "sum(container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container_name=\"istio-proxy\"})", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "{{ container_name }}", "refId": "B", "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", - "refId": "H", - "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Request Size By Source", + "title": "Disk", "tooltip": { "shared": true, "sort": 0, @@ -6216,17 +5370,18 @@ data: }, "yaxes": [ { - "format": "decbytes", - "label": null, + "format": "bytes", + "label": "", "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { - "format": "short", - "label": null, - "logBase": 1, + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, "max": null, "min": null, "show": false @@ -6238,27 +5393,37 @@ data: } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 39 + }, + "id": 69, + "panels": [], + "title": "Pilot Resource Usage", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 20 + "h": 7, + "w": 6, + "x": 0, + "y": 40 }, - "id": 68, + "id": 5, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -6277,82 +5442,87 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "process_virtual_memory_bytes{job=\"pilot\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", - "refId": "D", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory", + "refId": "I", "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "process_resident_memory_bytes{job=\"pilot\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", - "refId": "A", + "intervalFactor": 2, + "legendFormat": "Resident Memory", + "refId": "H", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "go_memstats_heap_sys_bytes{job=\"pilot\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", - "refId": "B", - "step": 2 + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "A" }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "go_memstats_heap_alloc_bytes{job=\"pilot\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", - "refId": "C", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{job=\"pilot\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F", "step": 2 }, { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "go_memstats_heap_inuse_bytes{job=\"pilot\"}", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", + "intervalFactor": 2, + "legendFormat": "Heap in-use", "refId": "E", "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "go_memstats_stack_inuse_bytes{job=\"pilot\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", - "refId": "F", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "G", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"})", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", - "refId": "G", + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "C", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "container_memory_usage_bytes{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", - "refId": "H", + "intervalFactor": 2, + "legendFormat": "{{ container_name }} (k8s)", + "refId": "B", "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Response Size By Source", + "title": "Memory", "tooltip": { "shared": true, "sort": 0, @@ -6368,11 +5538,11 @@ data: }, "yaxes": [ { - "format": "decbytes", + "format": "bytes", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -6397,12 +5567,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 26 + "h": 7, + "w": 6, + "x": 6, + "y": 40 }, - "id": 80, + "id": 602, "legend": { "avg": false, "current": false, @@ -6426,27 +5596,38 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m]))", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "Total (k8s)", "refId": "A", "step": 2 }, { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m])) by (container_name)", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container_name }} (k8s)", "refId": "B", "step": 2 + }, + { + "expr": "irate(process_cpu_seconds_total{job=\"pilot\"}[1m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "pilot (self-reported)", + "refId": "C", + "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Bytes Received from Incoming TCP Connection", + "title": "vCPU", "tooltip": { "shared": true, "sort": 0, @@ -6462,11 +5643,11 @@ data: }, "yaxes": [ { - "format": "Bps", + "format": "short", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -6491,12 +5672,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 12, + "h": 7, + "w": 6, "x": 12, - "y": 26 + "y": 40 }, - "id": 82, + "id": 74, "legend": { "avg": false, "current": false, @@ -6520,26 +5701,29 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "process_open_fds{job=\"pilot\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", - "refId": "A", - "step": 2 + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open FDs (pilot)", + "refId": "A" }, { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", + "intervalFactor": 2, + "legendFormat": "{{ container_name }}", "refId": "B", "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Bytes Sent to Incoming TCP Connection", + "title": "Disk", "tooltip": { "shared": true, "sort": 0, @@ -6555,20 +5739,21 @@ data: }, "yaxes": [ { - "format": "Bps", - "label": null, + "format": "bytes", + "label": "", "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { - "format": "short", - "label": null, - "logBase": 1, + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -6576,49 +5761,33 @@ data: "alignLevel": null } }, - { - "content": "
\nSERVICE WORKLOADS\n
", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 32 - }, - "id": 69, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" - }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "fill": 0, + "fill": 1, "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 35 + "h": 7, + "w": 6, + "x": 18, + "y": 40 }, - "id": 90, + "id": 402, "legend": { "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "show": true, + "show": false, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null as zero", + "nullPointMode": "null", "percentage": false, "pointradius": 5, "points": false, @@ -6629,29 +5798,21 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\",destination_service=~\"$service\",reporter=\"destination\",destination_workload=~\"$dstwl\",destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace, response_code), 0.001)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code }} (🔐mTLS)", - "refId": "B", - "step": 2 - }, - { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", reporter=\"destination\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace, response_code), 0.001)", + "expr": "go_goroutines{job=\"pilot\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code }}", + "intervalFactor": 2, + "legendFormat": "Number of Goroutines", "refId": "A", "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Requests by Destination And Response Code", + "title": "Goroutines", "tooltip": { - "shared": false, + "shared": true, "sort": 0, "value_type": "individual" }, @@ -6661,17 +5822,15 @@ data: "mode": "time", "name": null, "show": true, - "values": [ - "total" - ] + "values": [] }, "yaxes": [ { - "format": "ops", - "label": null, + "format": "short", + "label": "", "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -6680,7 +5839,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -6688,6 +5847,19 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 93, + "panels": [], + "title": "Mixer Resource Usage", + "type": "row" + }, { "aliasColors": {}, "bars": false, @@ -6696,17 +5868,15 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 35 + "h": 7, + "w": 6, + "x": 0, + "y": 48 }, - "id": 91, + "id": 94, "legend": { "avg": false, "current": false, - "hideEmpty": true, - "hideZero": false, "max": false, "min": false, "show": true, @@ -6727,28 +5897,87 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace)", + "expr": "process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory", + "refId": "I", + "step": 2 + }, + { + "expr": "process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory", + "refId": "H", + "step": 2 + }, + { + "expr": "go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "A" + }, + { + "expr": "go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F", + "step": 2 + }, + { + "expr": "go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} (🔐mTLS)", - "refId": "A", + "intervalFactor": 2, + "legendFormat": "Heap in-use", + "refId": "E", "step": 2 }, { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace)", + "expr": "go_memstats_stack_inuse_bytes{job=~\"istio-policy|istio-telemetry\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "G", + "step": 2 + }, + { + "expr": "sum(container_memory_usage_bytes{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"})", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "intervalFactor": 2, + "legendFormat": "Total (k8s)", + "refId": "C", + "step": 2 + }, + { + "expr": "container_memory_usage_bytes{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ container_name }} (k8s)", "refId": "B", "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Success Rate (non-5xx responses) By Source", + "title": "Memory", "tooltip": { "shared": true, "sort": 0, @@ -6764,11 +5993,11 @@ data: }, "yaxes": [ { - "format": "percentunit", + "format": "bytes", "label": null, "logBase": 1, - "max": "1.01", - "min": "0", + "max": null, + "min": null, "show": true }, { @@ -6791,24 +6020,19 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "description": "", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 41 + "h": 7, + "w": 6, + "x": 6, + "y": 48 }, - "id": 94, + "id": 95, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, - "hideZero": false, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -6827,82 +6051,38 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}[1m]))", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "Total (k8s)", "refId": "A", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}[1m])) by (container_name)", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "{{ container_name }} (k8s)", "refId": "B", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "expr": "irate(process_cpu_seconds_total{job=~\"istio-policy|istio-telemetry\"}[1m])", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "mixer (self-reported)", "refId": "C", "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99", - "refId": "H", - "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Incoming Request Duration by Source", + "title": "vCPU", "tooltip": { "shared": true, "sort": 0, @@ -6918,11 +6098,11 @@ data: }, "yaxes": [ { - "format": "s", + "format": "short", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -6931,7 +6111,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -6947,20 +6127,17 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 41 + "h": 7, + "w": 6, + "x": 12, + "y": 48 }, - "id": 95, + "id": 96, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -6979,108 +6156,56 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "expr": "process_open_fds{job=~\"istio-policy|istio-telemetry\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)", - "refId": "A", - "step": 2 + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open FDs (pilot)", + "refId": "A" }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "expr": "container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "{{ container_name }}", "refId": "B", "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99", - "refId": "H", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Incoming Request Size By Source", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, "max": null, "min": null, "show": false @@ -7099,21 +6224,18 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 41 + "h": 7, + "w": 6, + "x": 18, + "y": 48 }, - "id": 96, + "id": 97, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "rightSide": false, - "show": true, + "show": false, "total": false, "values": false }, @@ -7131,82 +6253,19 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "expr": "go_goroutines{job=\"istio-telemetry\"}", "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)", + "intervalFactor": 2, + "legendFormat": "Number of Goroutines", "refId": "A", "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)", - "refId": "B", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99", - "refId": "H", - "step": 2 } ], "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Response Size By Source", + "title": "Goroutines", "tooltip": { "shared": true, "sort": 0, @@ -7222,11 +6281,11 @@ data: }, "yaxes": [ { - "format": "decbytes", - "label": null, + "format": "short", + "label": "", "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -7235,33 +6294,292 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { "align": false, "alignLevel": null } - }, + } + ], + "refresh": "10s", + "schemaVersion": 18, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Performance Dashboard", + "uid": "vu8e0VWZk", + "version": 22 +} +' +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: istio-grafana-configuration-dashboards-istio-service-dashboard + namespace: istio-system + labels: + app: grafana + chart: grafana + heritage: Tiller + release: istio + istio: grafana +data: + istio-service-dashboard.json: '{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "iteration": 1536442501501, + "links": [], + "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "content": "
\nSERVICE: $service\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 89, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], "datasource": "Prometheus", - "fill": 1, + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 6, - "w": 12, + "h": 4, + "w": 6, "x": 0, - "y": 47 + "y": 3 }, - "id": 92, + "id": 12, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "round(sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\"}[5m])), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Client Request Volume", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "decimals": null, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 80, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 3 + }, + "id": 14, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"source\",destination_service=~\"$service\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "refId": "B" + } + ], + "thresholds": "95, 99, 99.5", + "title": "Client Success Rate (non-5xx responses)", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 3 + }, + "id": 87, "legend": { + "alignAsTable": false, "avg": false, "current": false, + "hideEmpty": false, + "hideZero": false, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, "values": false @@ -7280,27 +6598,34 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "P50", + "refId": "A" + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace}} (🔐mTLS)", - "refId": "A", - "step": 2 + "legendFormat": "P90", + "refId": "B" }, { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\",destination_service=~\"$service\"}[1m])) by (le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace}}", - "refId": "B", - "step": 2 + "legendFormat": "P99", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Bytes Received from Incoming TCP Connection", + "title": "Client Request Duration", "tooltip": { "shared": true, "sort": 0, @@ -7316,11 +6641,11 @@ data: }, "yaxes": [ { - "format": "Bps", + "format": "s", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -7329,7 +6654,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -7338,24 +6663,275 @@ data: } }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], "datasource": "Prometheus", - "fill": 1, + "format": "Bps", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 47 + "h": 4, + "w": 6, + "x": 18, + "y": 3 }, - "id": 93, - "legend": { + "id": 84, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", destination_service=~\"$service\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "", + "title": "TCP Received Bytes", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 7 + }, + "id": 97, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\"}[5m])), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Server Request Volume", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "decimals": null, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 80, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 7 + }, + "id": 98, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"destination\",destination_service=~\"$service\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "refId": "B" + } + ], + "thresholds": "95, 99, 99.5", + "title": "Server Success Rate (non-5xx responses)", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 7 + }, + "id": 99, + "legend": { + "alignAsTable": false, "avg": false, "current": false, + "hideEmpty": false, + "hideZero": false, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, "values": false @@ -7374,26 +6950,34 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))", "format": "time_series", + "interval": "", "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{destination_workload_namespace }} (🔐mTLS)", - "refId": "A", - "step": 2 + "legendFormat": "P50", + "refId": "A" }, { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_workload }}.{{destination_workload_namespace }}", - "refId": "B", - "step": 2 - } - ], + "legendFormat": "P90", + "refId": "B" + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_service=~\"$service\"}[1m])) by (le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "P99", + "refId": "C" + } + ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Bytes Sent to Incoming TCP Connection", + "title": "Server Request Duration", "tooltip": { "shared": true, "sort": 0, @@ -7409,11 +6993,11 @@ data: }, "yaxes": [ { - "format": "Bps", + "format": "s", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -7422,423 +7006,305 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { "align": false, "alignLevel": null } - } - ], - "refresh": "10s", - "schemaVersion": 16, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "datasource": "Prometheus", - "hide": 0, - "includeAll": false, - "label": "Service", - "multi": false, - "name": "service", - "options": [], - "query": "label_values(destination_service)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "Bps", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true }, - { - "allValue": null, - "current": { - "text": "All", - "value": "$__all" - }, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Client Workload Namespace", - "multi": true, - "name": "srcns", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=\"$service\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\"}) by (source_workload_namespace))", - "refresh": 1, - "regex": "/.*namespace=\"([^\"]*).*/", - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 7 }, - { - "allValue": null, - "current": { - "text": "All", - "value": "$__all" + "id": 100, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 }, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Client Workload", - "multi": true, - "name": "srcwl", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=~\"$service\", source_workload_namespace=~\"$srcns\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\", source_workload_namespace=~\"$srcns\"}) by (source_workload))", - "refresh": 1, - "regex": "/.*workload=\"([^\"]*).*/", - "sort": 3, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true }, - { - "allValue": null, - "current": { - "text": "All", - "value": "$__all" - }, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Service Workload Namespace", - "multi": true, - "name": "dstns", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=\"$service\"}) by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\"}) by (destination_workload_namespace))", - "refresh": 1, - "regex": "/.*namespace=\"([^\"]*).*/", - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"source\", destination_service=~\"$service\"}[1m])) ", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "", + "title": "TCP Sent Bytes", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "content": "
\nCLIENT WORKLOADS\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 11 }, - { - "allValue": null, - "current": { - "text": "All", - "value": "$__all" + "id": 45, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 14 + }, + "id": 25, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\",destination_service=~\"$service\",reporter=\"source\",source_workload=~\"$srcwl\",source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} (🔐mTLS)", + "refId": "B", + "step": 2 }, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Service Workload", - "multi": true, - "name": "dstwl", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=~\"$service\", destination_workload_namespace=~\"$dstns\"}) by (destination_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\", destination_workload_namespace=~\"$dstns\"}) by (destination_workload))", - "refresh": 1, - "regex": "/.*workload=\"([^\"]*).*/", - "sort": 3, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Istio Service Dashboard", - "uid": "LJ_uJAvmk", - "version": 1 -} -' ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-grafana-configuration-dashboards-istio-workload-dashboard - namespace: istio-system - labels: - app: grafana - chart: grafana - heritage: Tiller - release: istio - istio: grafana -data: - istio-workload-dashboard.json: '{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.0.4" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "5.0.0" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "text", - "name": "Text", - "version": "5.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "iteration": 1531345461465, - "links": [], - "panels": [ - { - "content": "
\nWORKLOAD: $workload.$namespace\n
", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 89, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 4, - "w": 8, - "x": 0, - "y": 3 - }, - "id": 12, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ { - "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\"}[5m])), 0.001)", + "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", reporter=\"source\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", "format": "time_series", + "hide": false, "intervalFactor": 1, + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }}", "refId": "A", - "step": 4 + "step": 2 } ], - "thresholds": "", - "title": "Incoming Request Volume", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Requests by Source And Response Code", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ { - "op": "=", - "text": "N/A", - "value": "null" + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false } ], - "valueName": "current" + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "Prometheus", - "decimals": null, - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 80, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, + "fill": 1, "gridPos": { - "h": 4, - "w": 8, - "x": 8, - "y": 3 + "h": 6, + "w": 12, + "x": 12, + "y": 14 }, - "id": 14, - "interval": null, + "id": 26, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, "links": [], - "mappingType": 1, - "mappingTypes": [ + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "name": "value to text", - "value": 1 + "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} (🔐mTLS)", + "refId": "A", + "step": 2 }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\"}[5m]))", + "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "refId": "B" + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }}", + "refId": "B", + "step": 2 } ], - "thresholds": "95, 99, 99.5", - "title": "Incoming Success Rate (non-5xx responses)", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Success Rate (non-5xx responses) By Source", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "op": "=", - "text": "N/A", - "value": "null" + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1.01", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false } ], - "valueName": "avg" + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, @@ -7846,23 +7312,24 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "", "fill": 1, "gridPos": { - "h": 4, + "h": 6, "w": 8, - "x": 16, - "y": 3 + "x": 0, + "y": 20 }, - "id": 87, + "id": 27, "legend": { "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": false, + "hideEmpty": true, "hideZero": false, "max": false, "min": false, - "rightSide": true, + "rightSide": false, "show": true, "total": false, "values": false @@ -7881,34 +7348,82 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", - "interval": "", + "hide": false, "intervalFactor": 1, - "legendFormat": "P50", - "refId": "A" + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", + "refId": "D", + "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))", + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "P90", - "refId": "B" + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", + "refId": "A", + "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))", + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "P99", - "refId": "C" + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", + "refId": "H", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Request Duration", + "title": "Incoming Request Duration by Source", "tooltip": { "shared": true, "sort": 0, @@ -7928,7 +7443,7 @@ data: "label": null, "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -7939,209 +7454,34 @@ data: "min": null, "show": false } - ] + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, "datasource": "Prometheus", - "format": "Bps", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, + "fill": 1, "gridPos": { - "h": 4, - "w": 12, - "x": 0, - "y": 7 + "h": 6, + "w": 8, + "x": 8, + "y": 20 }, - "id": 84, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\"}[1m])) + sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "TCP Server Traffic", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "Bps", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 4, - "w": 12, - "x": 12, - "y": 7 - }, - "id": 85, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\"}[1m])) + sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "TCP Client Traffic", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "content": "
\nINBOUND WORKLOADS\n
", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 11 - }, - "id": 45, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 25, + "id": 28, "legend": { + "alignAsTable": false, "avg": false, "current": false, "hideEmpty": true, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -8149,7 +7489,7 @@ data: "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null as zero", + "nullPointMode": "null", "percentage": false, "pointradius": 5, "points": false, @@ -8160,29 +7500,84 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", reporter=\"destination\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} (🔐mTLS)", - "refId": "B", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", + "refId": "D", "step": 2 }, { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", reporter=\"destination\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }}", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", "refId": "A", "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", + "refId": "H", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Incoming Requests by Source And Response Code", + "title": "Incoming Request Size By Source", "tooltip": { - "shared": false, + "shared": true, "sort": 0, "value_type": "individual" }, @@ -8192,13 +7587,11 @@ data: "mode": "time", "name": null, "show": true, - "values": [ - "total" - ] + "values": [] }, "yaxes": [ { - "format": "ops", + "format": "decbytes", "label": null, "logBase": 1, "max": null, @@ -8213,29 +7606,34 @@ data: "min": null, "show": false } - ] - }, - { - "aliasColors": {}, - "bars": false, + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fill": 1, "gridPos": { "h": 6, - "w": 12, - "x": 12, - "y": 14 + "w": 8, + "x": 16, + "y": 20 }, - "id": 26, + "id": 68, "legend": { + "alignAsTable": false, "avg": false, "current": false, "hideEmpty": true, - "hideZero": false, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -8254,28 +7652,82 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }}", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", "refId": "B", "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", + "refId": "H", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Incoming Success Rate (non-5xx responses) By Source", + "title": "Response Size By Source", "tooltip": { "shared": true, "sort": 0, @@ -8291,10 +7743,10 @@ data: }, "yaxes": [ { - "format": "percentunit", + "format": "decbytes", "label": null, "logBase": 1, - "max": "1.01", + "max": null, "min": "0", "show": true }, @@ -8306,7 +7758,11 @@ data: "min": null, "show": false } - ] + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, @@ -8314,24 +7770,19 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "description": "", "fill": 1, "gridPos": { "h": 6, - "w": 8, + "w": 12, "x": 0, - "y": 20 + "y": 26 }, - "id": 27, + "id": 80, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, - "hideZero": false, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -8350,82 +7801,27 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", "refId": "B", "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", - "refId": "H", - "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Incoming Request Duration by Source", + "title": "Bytes Received from Incoming TCP Connection", "tooltip": { "shared": true, "sort": 0, @@ -8441,7 +7837,7 @@ data: }, "yaxes": [ { - "format": "s", + "format": "Bps", "label": null, "logBase": 1, "max": null, @@ -8454,9 +7850,13 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } - ] + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "aliasColors": {}, @@ -8467,19 +7867,16 @@ data: "fill": 1, "gridPos": { "h": 6, - "w": 8, - "x": 8, - "y": 20 + "w": 12, + "x": 12, + "y": 26 }, - "id": 28, + "id": 82, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -8498,82 +7895,26 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", "refId": "B", "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, - { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", - "refId": "E", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", - "refId": "F", - "step": 2 - }, - { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", - "refId": "G", - "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", - "refId": "H", - "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Incoming Request Size By Source", + "title": "Bytes Sent to Incoming TCP Connection", "tooltip": { "shared": true, "sort": 0, @@ -8589,7 +7930,7 @@ data: }, "yaxes": [ { - "format": "decbytes", + "format": "Bps", "label": null, "logBase": 1, "max": null, @@ -8602,29 +7943,244 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } - ] - }, - { + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "content": "
\nSERVICE WORKLOADS\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 69, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 90, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\",destination_service=~\"$service\",reporter=\"destination\",destination_workload=~\"$dstwl\",destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace, response_code), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code }} (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", reporter=\"destination\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace, response_code), 0.001)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} : {{ response_code }}", + "refId": "A", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Requests by Destination And Response Code", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ + "total" + ] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 91, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\",response_code!~\"5.*\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[5m])) by (destination_workload, destination_workload_namespace)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Success Rate (non-5xx responses) By Source", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "percentunit", + "label": null, + "logBase": 1, + "max": "1.01", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "", "fill": 1, "gridPos": { "h": 6, "w": 8, - "x": 16, - "y": 20 + "x": 0, + "y": 41 }, - "id": 68, + "id": 94, "legend": { "alignAsTable": false, "avg": false, "current": false, "hideEmpty": true, + "hideZero": false, "max": false, "min": false, "rightSide": false, @@ -8632,127 +8188,1032 @@ data: "total": false, "values": false }, - "lines": true, - "linewidth": 1, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99", + "refId": "H", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Request Duration by Source", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 8, + "x": 8, + "y": 41 + }, + "id": 95, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99", + "refId": "H", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Incoming Request Size By Source", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 8, + "x": 16, + "y": 41 + }, + "id": 96, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90 (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace }} P99", + "refId": "H", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Size By Source", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 47 + }, + "id": 92, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace}} (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{ destination_workload_namespace}}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Bytes Received from Incoming TCP Connection", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 47 + }, + "id": 93, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{destination_workload_namespace }} (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", destination_service=~\"$service\", destination_workload=~\"$dstwl\", destination_workload_namespace=~\"$dstns\"}[1m])) by (destination_workload, destination_workload_namespace), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ destination_workload }}.{{destination_workload_namespace }}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Bytes Sent to Incoming TCP Connection", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "10s", + "schemaVersion": 16, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Service", + "multi": false, + "name": "service", + "options": [], + "query": "label_values(destination_service)", + "refresh": 1, + "regex": "", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Client Workload Namespace", + "multi": true, + "name": "srcns", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=\"$service\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\"}) by (source_workload_namespace))", + "refresh": 1, + "regex": "/.*namespace=\"([^\"]*).*/", + "sort": 2, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Client Workload", + "multi": true, + "name": "srcwl", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=~\"$service\", source_workload_namespace=~\"$srcns\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\", source_workload_namespace=~\"$srcns\"}) by (source_workload))", + "refresh": 1, + "regex": "/.*workload=\"([^\"]*).*/", + "sort": 3, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Service Workload Namespace", + "multi": true, + "name": "dstns", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=\"$service\"}) by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\"}) by (destination_workload_namespace))", + "refresh": 1, + "regex": "/.*namespace=\"([^\"]*).*/", + "sort": 2, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { + "text": "All", + "value": "$__all" + }, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Service Workload", + "multi": true, + "name": "dstwl", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_service=~\"$service\", destination_workload_namespace=~\"$dstns\"}) by (destination_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_service=~\"$service\", destination_workload_namespace=~\"$dstns\"}) by (destination_workload))", + "refresh": 1, + "regex": "/.*workload=\"([^\"]*).*/", + "sort": 3, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Service Dashboard", + "uid": "LJ_uJAvmk", + "version": 1 +} +' +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: istio-grafana-configuration-dashboards-istio-workload-dashboard + namespace: istio-system + labels: + app: grafana + chart: grafana + heritage: Tiller + release: istio + istio: grafana +data: + istio-workload-dashboard.json: '{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "5.0.4" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "5.0.0" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "5.0.0" + }, + { + "type": "panel", + "id": "singlestat", + "name": "Singlestat", + "version": "5.0.0" + }, + { + "type": "panel", + "id": "text", + "name": "Text", + "version": "5.0.0" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1531345461465, + "links": [], + "panels": [ + { + "content": "
\nWORKLOAD: $workload.$namespace\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 89, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "Prometheus", + "format": "ops", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 8, + "x": 0, + "y": 3 + }, + "id": 12, + "interval": null, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ + "mappingType": 1, + "mappingTypes": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", - "refId": "D", - "step": 2 + "name": "value to text", + "value": 1 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", - "refId": "A", - "step": 2 - }, + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", - "refId": "B", - "step": 2 - }, + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "expr": "round(sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\"}[5m])), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, + "refId": "A", + "step": 4 + } + ], + "thresholds": "", + "title": "Incoming Request Volume", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", - "refId": "E", - "step": 2 - }, + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(50, 172, 45, 0.97)", + "rgba(237, 129, 40, 0.89)", + "rgba(245, 54, 54, 0.9)" + ], + "datasource": "Prometheus", + "decimals": null, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 80, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, + "gridPos": { + "h": 4, + "w": 8, + "x": 8, + "y": 3 + }, + "id": 14, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", - "refId": "F", - "step": 2 + "name": "value to text", + "value": 1 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", - "refId": "G", - "step": 2 - }, + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", - "refId": "H", - "step": 2 + "from": "null", + "text": "N/A", + "to": "null" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Response Size By Source", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true }, - "yaxes": [ + "tableColumn": "", + "targets": [ { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, + "expr": "sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\",response_code!~\"5.*\"}[5m])) / sum(irate(istio_requests_total{reporter=\"destination\",destination_workload_namespace=~\"$namespace\",destination_workload=~\"$workload\"}[5m]))", + "format": "time_series", + "intervalFactor": 1, + "refId": "B" + } + ], + "thresholds": "95, 99, 99.5", + "title": "Incoming Success Rate (non-5xx responses)", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false + "op": "=", + "text": "N/A", + "value": "null" } - ] + ], + "valueName": "avg" }, { "aliasColors": {}, @@ -8762,17 +9223,21 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 26 + "h": 4, + "w": 8, + "x": 16, + "y": 3 }, - "id": 80, + "id": 87, "legend": { + "alignAsTable": false, "avg": false, "current": false, + "hideEmpty": false, + "hideZero": false, "max": false, "min": false, + "rightSide": true, "show": true, "total": false, "values": false @@ -8791,27 +9256,34 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))", + "format": "time_series", + "interval": "", + "intervalFactor": 1, + "legendFormat": "P50", + "refId": "A" + }, + { + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", - "refId": "A", - "step": 2 + "legendFormat": "P90", + "refId": "B" }, { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\",destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\"}[1m])) by (le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", - "refId": "B", - "step": 2 + "legendFormat": "P99", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Bytes Received from Incoming TCP Connection", + "title": "Request Duration", "tooltip": { "shared": true, "sort": 0, @@ -8827,11 +9299,11 @@ data: }, "yaxes": [ { - "format": "Bps", + "format": "s", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -8840,27 +9312,209 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ] }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "Bps", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 84, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\"}[1m])) + sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "", + "title": "TCP Server Traffic", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorValue": false, + "colors": [ + "#299c46", + "rgba(237, 129, 40, 0.89)", + "#d44a3a" + ], + "datasource": "Prometheus", + "format": "Bps", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 85, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(irate(istio_tcp_sent_bytes_total{reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\"}[1m])) + sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "", + "title": "TCP Client Traffic", + "transparent": false, + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "content": "
\nINBOUND WORKLOADS\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 11 + }, + "id": 45, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "fill": 1, + "fill": 0, "gridPos": { "h": 6, "w": 12, - "x": 12, - "y": 26 + "x": 0, + "y": 14 }, - "id": 82, + "id": 25, "legend": { "avg": false, "current": false, + "hideEmpty": true, "max": false, "min": false, "show": true, @@ -8870,7 +9524,7 @@ data: "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null", + "nullPointMode": "null as zero", "percentage": false, "pointradius": 5, "points": false, @@ -8881,28 +9535,29 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", reporter=\"destination\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", - "refId": "A", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }} (🔐mTLS)", + "refId": "B", "step": 2 }, { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", reporter=\"destination\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace, response_code), 0.001)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", - "refId": "B", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} : {{ response_code }}", + "refId": "A", "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Bytes Sent to Incoming TCP Connection", + "title": "Incoming Requests by Source And Response Code", "tooltip": { - "shared": true, + "shared": false, "sort": 0, "value_type": "individual" }, @@ -8912,11 +9567,13 @@ data: "mode": "time", "name": null, "show": true, - "values": [] + "values": [ + "total" + ] }, "yaxes": [ { - "format": "Bps", + "format": "ops", "label": null, "logBase": 1, "max": null, @@ -8929,43 +9586,29 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ] }, - { - "content": "
\nOUTBOUND SERVICES\n
", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 32 - }, - "id": 69, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" - }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "fill": 0, + "fill": 1, "gridPos": { "h": 6, "w": 12, - "x": 0, - "y": 35 + "x": 12, + "y": 14 }, - "id": 70, + "id": 26, "legend": { "avg": false, "current": false, "hideEmpty": true, + "hideZero": false, "max": false, "min": false, "show": true, @@ -8975,7 +9618,7 @@ data: "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null as zero", + "nullPointMode": "null", "percentage": false, "pointradius": 5, "points": false, @@ -8986,29 +9629,30 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", reporter=\"source\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service, response_code), 0.001)", + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} : {{ response_code }} (🔐mTLS)", - "refId": "B", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }} (🔐mTLS)", + "refId": "A", "step": 2 }, { - "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", reporter=\"source\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service, response_code), 0.001)", + "expr": "sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\",response_code!~\"5.*\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace) / sum(irate(istio_requests_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[5m])) by (source_workload, source_workload_namespace)", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} : {{ response_code }}", - "refId": "A", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace }}", + "refId": "B", "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Outgoing Requests by Destination And Response Code", + "title": "Incoming Success Rate (non-5xx responses) By Source", "tooltip": { - "shared": false, + "shared": true, "sort": 0, "value_type": "individual" }, @@ -9018,16 +9662,14 @@ data: "mode": "time", "name": null, "show": true, - "values": [ - "total" - ] + "values": [] }, "yaxes": [ { - "format": "ops", + "format": "percentunit", "label": null, "logBase": 1, - "max": null, + "max": "1.01", "min": "0", "show": true }, @@ -9047,21 +9689,24 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "", "fill": 1, "gridPos": { "h": 6, - "w": 12, - "x": 12, - "y": 35 + "w": 8, + "x": 0, + "y": 20 }, - "id": 71, + "id": 27, "legend": { + "alignAsTable": false, "avg": false, "current": false, "hideEmpty": true, "hideZero": false, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -9080,28 +9725,82 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\",response_code!~\"5.*\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service)", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\",response_code!~\"5.*\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service)", + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{destination_service }}", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", "refId": "B", "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", + "refId": "H", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Outgoing Success Rate (non-5xx responses) By Destination", + "title": "Incoming Request Duration by Source", "tooltip": { "shared": true, "sort": 0, @@ -9117,10 +9816,10 @@ data: }, "yaxes": [ { - "format": "percentunit", + "format": "s", "label": null, "logBase": 1, - "max": "1.01", + "max": null, "min": "0", "show": true }, @@ -9140,21 +9839,19 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "description": "", "fill": 1, "gridPos": { "h": 6, "w": 8, - "x": 0, - "y": 41 + "x": 8, + "y": 20 }, - "id": 72, + "id": 28, "legend": { "alignAsTable": false, "avg": false, "current": false, "hideEmpty": true, - "hideZero": false, "max": false, "min": false, "rightSide": false, @@ -9176,74 +9873,74 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P50 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", "refId": "D", "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P90 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P95 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", "refId": "B", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P99 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", "refId": "C", "step": 2 }, { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P50", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", "refId": "E", "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P90", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", "refId": "F", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P95", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", "refId": "G", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P99", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", "refId": "H", "step": 2 } @@ -9251,7 +9948,7 @@ data: "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Outgoing Request Duration by Destination", + "title": "Incoming Request Size By Source", "tooltip": { "shared": true, "sort": 0, @@ -9267,7 +9964,7 @@ data: }, "yaxes": [ { - "format": "s", + "format": "decbytes", "label": null, "logBase": 1, "max": null, @@ -9294,10 +9991,10 @@ data: "gridPos": { "h": 6, "w": 8, - "x": 8, - "y": 41 + "x": 16, + "y": 20 }, - "id": 73, + "id": 68, "legend": { "alignAsTable": false, "avg": false, @@ -9324,74 +10021,74 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P50 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50 (🔐mTLS)", "refId": "D", "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P90 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90 (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P95 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95 (🔐mTLS)", "refId": "B", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P99 (🔐mTLS)", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99 (🔐mTLS)", "refId": "C", "step": 2 }, { - "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P50", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P50", "refId": "E", "step": 2 }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P90", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P90", "refId": "F", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P95", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P95", "refId": "G", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload=~\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace, le))", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P99", + "legendFormat": "{{source_workload}}.{{source_workload_namespace}} P99", "refId": "H", "step": 2 } @@ -9399,7 +10096,97 @@ data: "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Outgoing Request Size By Destination", + "title": "Response Size By Source", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 80, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", connection_security_policy=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"destination\", connection_security_policy!=\"mutual_tls\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", + "refId": "B", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Bytes Received from Incoming TCP Connection", "tooltip": { "shared": true, "sort": 0, @@ -9415,7 +10202,7 @@ data: }, "yaxes": [ { - "format": "decbytes", + "format": "Bps", "label": null, "logBase": 1, "max": null, @@ -9428,7 +10215,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ] }, @@ -9441,19 +10228,16 @@ data: "fill": 1, "gridPos": { "h": 6, - "w": 8, - "x": 16, - "y": 41 + "w": 12, + "x": 12, + "y": 26 }, - "id": 74, + "id": 82, "legend": { - "alignAsTable": false, "avg": false, "current": false, - "hideEmpty": true, "max": false, "min": false, - "rightSide": false, "show": true, "total": false, "values": false @@ -9472,84 +10256,134 @@ data: "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P50 (🔐mTLS)", - "refId": "D", - "step": 2 - }, - { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P90 (🔐mTLS)", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}} (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"destination\", destination_workload_namespace=~\"$namespace\", destination_workload=~\"$workload\", source_workload=~\"$srcwl\", source_workload_namespace=~\"$srcns\"}[1m])) by (source_workload, source_workload_namespace), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P95 (🔐mTLS)", + "legendFormat": "{{ source_workload }}.{{ source_workload_namespace}}", "refId": "B", "step": 2 - }, - { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P99 (🔐mTLS)", - "refId": "C", - "step": 2 - }, + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Bytes Sent to Incoming TCP Connection", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P50", - "refId": "E", - "step": 2 + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true }, { - "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P90", - "refId": "F", - "step": 2 - }, + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "content": "
\nOUTBOUND SERVICES\n
", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 32 + }, + "id": 69, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 0, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 70, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null as zero", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "round(sum(irate(istio_requests_total{connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", reporter=\"source\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service, response_code), 0.001)", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P95", - "refId": "G", + "legendFormat": "{{ destination_service }} : {{ response_code }} (🔐mTLS)", + "refId": "B", "step": 2 }, { - "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "expr": "round(sum(irate(istio_requests_total{connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", reporter=\"source\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service, response_code), 0.001)", "format": "time_series", "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} P99", - "refId": "H", + "legendFormat": "{{ destination_service }} : {{ response_code }}", + "refId": "A", "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Response Size By Destination", + "title": "Outgoing Requests by Destination And Response Code", "tooltip": { - "shared": true, + "shared": false, "sort": 0, "value_type": "individual" }, @@ -9559,11 +10393,13 @@ data: "mode": "time", "name": null, "show": true, - "values": [] + "values": [ + "total" + ] }, "yaxes": [ { - "format": "decbytes", + "format": "ops", "label": null, "logBase": 1, "max": null, @@ -9590,13 +10426,15 @@ data: "gridPos": { "h": 6, "w": 12, - "x": 0, - "y": 47 + "x": 12, + "y": 35 }, - "id": 76, + "id": 71, "legend": { "avg": false, "current": false, + "hideEmpty": true, + "hideZero": false, "max": false, "min": false, "show": true, @@ -9617,18 +10455,20 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", + "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\",response_code!~\"5.*\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service)", "format": "time_series", + "hide": false, "intervalFactor": 1, "legendFormat": "{{ destination_service }} (🔐mTLS)", "refId": "A", "step": 2 }, { - "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", + "expr": "sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\",response_code!~\"5.*\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service) / sum(irate(istio_requests_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[5m])) by (destination_service)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }}", + "legendFormat": "{{destination_service }}", "refId": "B", "step": 2 } @@ -9636,7 +10476,7 @@ data: "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Bytes Sent on Outgoing TCP Connection", + "title": "Outgoing Success Rate (non-5xx responses) By Destination", "tooltip": { "shared": true, "sort": 0, @@ -9652,10 +10492,10 @@ data: }, "yaxes": [ { - "format": "Bps", + "format": "percentunit", "label": null, "logBase": 1, - "max": null, + "max": "1.01", "min": "0", "show": true }, @@ -9665,7 +10505,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ] }, @@ -9675,19 +10515,24 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "", "fill": 1, "gridPos": { "h": 6, - "w": 12, - "x": 12, - "y": 47 + "w": 8, + "x": 0, + "y": 41 }, - "id": 78, + "id": 72, "legend": { + "alignAsTable": false, "avg": false, "current": false, + "hideEmpty": true, + "hideZero": false, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -9706,26 +10551,82 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P90 (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.50, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.50, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.90, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.90, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "(histogram_quantile(0.95, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.95, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }} (🔐mTLS)", - "refId": "A", + "legendFormat": "{{ destination_service }} P95", + "refId": "G", "step": 2 }, { - "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", + "expr": "(histogram_quantile(0.99, sum(irate(istio_request_duration_milliseconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le)) / 1000) or histogram_quantile(0.99, sum(irate(istio_request_duration_seconds_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ destination_service }}", - "refId": "B", + "legendFormat": "{{ destination_service }} P99", + "refId": "H", "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Bytes Received from Outgoing TCP Connection", + "title": "Outgoing Request Duration by Destination", "tooltip": { "shared": true, "sort": 0, @@ -9741,7 +10642,7 @@ data: }, "yaxes": [ { - "format": "Bps", + "format": "s", "label": null, "logBase": 1, "max": null, @@ -9754,241 +10655,9 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ] - } - ], - "refresh": "10s", - "schemaVersion": 16, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "Prometheus", - "hide": 0, - "includeAll": false, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [], - "query": "query_result(sum(istio_requests_total) by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total) by (destination_workload_namespace))", - "refresh": 1, - "regex": "/.*_namespace=\"([^\"]*).*/", - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "Prometheus", - "hide": 0, - "includeAll": false, - "label": "Workload", - "multi": false, - "name": "workload", - "options": [], - "query": "query_result((sum(istio_requests_total{destination_workload_namespace=~\"$namespace\"}) by (destination_workload) or sum(istio_requests_total{source_workload_namespace=~\"$namespace\"}) by (source_workload)) or (sum(istio_tcp_sent_bytes_total{destination_workload_namespace=~\"$namespace\"}) by (destination_workload) or sum(istio_tcp_sent_bytes_total{source_workload_namespace=~\"$namespace\"}) by (source_workload)))", - "refresh": 1, - "regex": "/.*workload=\"([^\"]*).*/", - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Inbound Workload Namespace", - "multi": true, - "name": "srcns", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\"}) by (source_workload_namespace))", - "refresh": 1, - "regex": "/.*namespace=\"([^\"]*).*/", - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Inbound Workload", - "multi": true, - "name": "srcwl", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload_namespace=~\"$srcns\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload_namespace=~\"$srcns\"}) by (source_workload))", - "refresh": 1, - "regex": "/.*workload=\"([^\"]*).*/", - "sort": 3, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Destination Service", - "multi": true, - "name": "dstsvc", - "options": [], - "query": "query_result( sum(istio_requests_total{reporter=\"source\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\"}) by (destination_service) or sum(istio_tcp_sent_bytes_total{reporter=\"source\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\"}) by (destination_service))", - "refresh": 1, - "regex": "/.*destination_service=\"([^\"]*).*/", - "sort": 4, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Istio Workload Dashboard", - "uid": "UbsSZTDik", - "version": 1 -} -' ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-grafana-configuration-dashboards-mixer-dashboard - namespace: istio-system - labels: - app: grafana - chart: grafana - heritage: Tiller - release: istio - istio: grafana -data: - mixer-dashboard.json: '{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.2.3" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "5.0.0" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "text", - "name": "Text", - "version": "5.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "limit": 100, - "name": "Annotations & Alerts", - "showIn": 0, - "type": "dashboard" - } - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 1, - "id": null, - "iteration": 1543881232533, - "links": [], - "panels": [ - { - "content": "

Deployed Versions

", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 0 - }, - "height": "40", - "id": 62, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" }, { "aliasColors": {}, @@ -9998,17 +10667,20 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 5, - "w": 24, - "x": 0, - "y": 3 + "h": 6, + "w": 8, + "x": 8, + "y": 41 }, - "id": 64, + "id": 73, "legend": { + "alignAsTable": false, "avg": false, "current": false, + "hideEmpty": true, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -10027,17 +10699,82 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(istio_build{component=\"mixer\"}) by (tag)", + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ tag }}", - "refId": "A" + "legendFormat": "{{ destination_service }} P50 (🔐mTLS)", + "refId": "D", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P90 (🔐mTLS)", + "refId": "A", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P95 (🔐mTLS)", + "refId": "B", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P99 (🔐mTLS)", + "refId": "C", + "step": 2 + }, + { + "expr": "histogram_quantile(0.50, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P50", + "refId": "E", + "step": 2 + }, + { + "expr": "histogram_quantile(0.90, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P90", + "refId": "F", + "step": 2 + }, + { + "expr": "histogram_quantile(0.95, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P95", + "refId": "G", + "step": 2 + }, + { + "expr": "histogram_quantile(0.99, sum(irate(istio_request_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P99", + "refId": "H", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Mixer Versions", + "title": "Outgoing Request Size By Destination", "tooltip": { "shared": true, "sort": 0, @@ -10053,11 +10790,11 @@ data: }, "yaxes": [ { - "format": "short", + "format": "decbytes", "label": null, "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -10068,27 +10805,7 @@ data: "min": null, "show": false } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "content": "

Resource Usage

", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 8 - }, - "height": "40", - "id": 29, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" + ] }, { "aliasColors": {}, @@ -10098,17 +10815,20 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 11 + "h": 6, + "w": 8, + "x": 16, + "y": 41 }, - "id": 5, + "id": 74, "legend": { + "alignAsTable": false, "avg": false, "current": false, + "hideEmpty": true, "max": false, "min": false, + "rightSide": false, "show": true, "total": false, "values": false @@ -10127,79 +10847,171 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "Virtual Memory ({{ job }})", - "refId": "I" + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P50 (🔐mTLS)", + "refId": "D", + "step": 2 }, { - "expr": "sum(process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Resident Memory ({{ job }})", - "refId": "H" + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P90 (🔐mTLS)", + "refId": "A", + "step": 2 }, { - "expr": "sum(go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap sys ({{ job }})", - "refId": "A" + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P95 (🔐mTLS)", + "refId": "B", + "step": 2 }, { - "expr": "sum(go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap alloc ({{ job }})", - "refId": "D" + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P99 (🔐mTLS)", + "refId": "C", + "step": 2 }, { - "expr": "sum(go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.50, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Alloc ({{ job }})", - "refId": "F" + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P50", + "refId": "E", + "step": 2 }, { - "expr": "sum(go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.90, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", "hide": false, - "intervalFactor": 2, - "legendFormat": "Heap in-use ({{ job }})", - "refId": "E" + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P90", + "refId": "F", + "step": 2 }, { - "expr": "sum(go_memstats_stack_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "histogram_quantile(0.95, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Stack in-use ({{ job }})", - "refId": "G" + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P95", + "refId": "G", + "step": 2 }, { - "expr": "sum(label_replace(container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (service)", + "expr": "histogram_quantile(0.99, sum(irate(istio_response_bytes_bucket{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service, le))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} P99", + "refId": "H", + "step": 2 + } + ], + "thresholds": [], + "timeFrom": null, + "timeShift": null, + "title": "Response Size By Destination", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ] + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "Prometheus", + "fill": 1, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 47 + }, + "id": 76, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy=\"mutual_tls\", reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ service }} total (k8s)", - "refId": "C" + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} (🔐mTLS)", + "refId": "A", + "step": 2 }, { - "expr": "sum(label_replace(container_memory_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (container_name, service)", + "expr": "round(sum(irate(istio_tcp_sent_bytes_total{connection_security_policy!=\"mutual_tls\", reporter=\"source\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ service }} - {{ container_name }} (k8s)", - "refId": "B" + "intervalFactor": 1, + "legendFormat": "{{ destination_service }}", + "refId": "B", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Memory", + "title": "Bytes Sent on Outgoing TCP Connection", "tooltip": { "shared": true, "sort": 0, @@ -10215,11 +11027,11 @@ data: }, "yaxes": [ { - "format": "bytes", + "format": "Bps", "label": null, "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -10228,13 +11040,9 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + ] }, { "aliasColors": {}, @@ -10244,12 +11052,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 6, - "x": 6, - "y": 11 + "h": 6, + "w": 12, + "x": 12, + "y": 47 }, - "id": 6, + "id": 78, "legend": { "avg": false, "current": false, @@ -10273,34 +11081,26 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (pod_name), \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ service }} total (k8s)", - "refId": "A" - }, - { - "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (container_name, pod_name), \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")", + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ service }} - {{ container_name }} (k8s)", - "refId": "B" + "intervalFactor": 1, + "legendFormat": "{{ destination_service }} (🔐mTLS)", + "refId": "A", + "step": 2 }, { - "expr": "sum(irate(process_cpu_seconds_total{job=~\"istio-telemetry|istio-policy\"}[1m])) by (job)", + "expr": "round(sum(irate(istio_tcp_received_bytes_total{reporter=\"source\", connection_security_policy!=\"mutual_tls\", source_workload_namespace=~\"$namespace\", source_workload=~\"$workload\", destination_service=~\"$dstsvc\"}[1m])) by (destination_service), 0.001)", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ job }} (self-reported)", - "refId": "C" + "intervalFactor": 1, + "legendFormat": "{{ destination_service }}", + "refId": "B", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "CPU", + "title": "Bytes Received from Outgoing TCP Connection", "tooltip": { "shared": true, "sort": 0, @@ -10316,11 +11116,11 @@ data: }, "yaxes": [ { - "format": "short", + "format": "Bps", "label": null, "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -10331,106 +11131,239 @@ data: "min": null, "show": true } - ], - "yaxis": { - "align": false, - "alignLevel": null + ] + } + ], + "refresh": "10s", + "schemaVersion": 16, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Namespace", + "multi": false, + "name": "namespace", + "options": [], + "query": "query_result(sum(istio_requests_total) by (destination_workload_namespace) or sum(istio_tcp_sent_bytes_total) by (destination_workload_namespace))", + "refresh": 1, + "regex": "/.*_namespace=\"([^\"]*).*/", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": false, + "label": "Workload", + "multi": false, + "name": "workload", + "options": [], + "query": "query_result((sum(istio_requests_total{destination_workload_namespace=~\"$namespace\"}) by (destination_workload) or sum(istio_requests_total{source_workload_namespace=~\"$namespace\"}) by (source_workload)) or (sum(istio_tcp_sent_bytes_total{destination_workload_namespace=~\"$namespace\"}) by (destination_workload) or sum(istio_tcp_sent_bytes_total{source_workload_namespace=~\"$namespace\"}) by (source_workload)))", + "refresh": 1, + "regex": "/.*workload=\"([^\"]*).*/", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Inbound Workload Namespace", + "multi": true, + "name": "srcns", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\"}) by (source_workload_namespace) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\"}) by (source_workload_namespace))", + "refresh": 1, + "regex": "/.*namespace=\"([^\"]*).*/", + "sort": 2, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Inbound Workload", + "multi": true, + "name": "srcwl", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload_namespace=~\"$srcns\"}) by (source_workload) or sum(istio_tcp_sent_bytes_total{reporter=\"destination\", destination_workload=\"$workload\", destination_workload_namespace=~\"$namespace\", source_workload_namespace=~\"$srcns\"}) by (source_workload))", + "refresh": 1, + "regex": "/.*workload=\"([^\"]*).*/", + "sort": 3, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Destination Service", + "multi": true, + "name": "dstsvc", + "options": [], + "query": "query_result( sum(istio_requests_total{reporter=\"source\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\"}) by (destination_service) or sum(istio_tcp_sent_bytes_total{reporter=\"source\", source_workload=~\"$workload\", source_workload_namespace=~\"$namespace\"}) by (destination_service))", + "refresh": 1, + "regex": "/.*destination_service=\"([^\"]*).*/", + "sort": 4, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Workload Dashboard", + "uid": "UbsSZTDik", + "version": 1 +} +' +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: istio-grafana-configuration-dashboards-mixer-dashboard + namespace: istio-system + labels: + app: grafana + chart: grafana + heritage: Tiller + release: istio + istio: grafana +data: + mixer-dashboard.json: '{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "5.2.3" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "5.0.0" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "5.0.0" + }, + { + "type": "panel", + "id": "text", + "name": "Text", + "version": "5.0.0" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "limit": 100, + "name": "Annotations & Alerts", + "showIn": 0, + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 1, + "id": null, + "iteration": 1543881232533, + "links": [], + "panels": [ + { + "content": "

Deployed Versions

", "gridPos": { - "h": 7, - "w": 6, - "x": 12, - "y": 11 - }, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "h": 3, + "w": 24, + "x": 0, + "y": 0 }, - "lines": true, - "linewidth": 1, + "height": "40", + "id": 62, "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(process_open_fds{job=~\"istio-telemetry|istio-policy\"}) by (job)", - "format": "time_series", - "hide": true, - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Open FDs ({{ job }})", - "refId": "A" - }, - { - "expr": "sum(label_replace(container_fs_usage_bytes{container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (container_name, service)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ service }} - {{ container_name }}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Disk", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "decimals": null, - "format": "none", - "label": "", - "logBase": 1024, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "mode": "html", + "title": "", + "transparent": true, + "type": "text" }, { "aliasColors": {}, @@ -10440,18 +11373,18 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 11 + "h": 5, + "w": 24, + "x": 0, + "y": 3 }, - "id": 4, + "id": 64, "legend": { "avg": false, "current": false, "max": false, "min": false, - "show": false, + "show": true, "total": false, "values": false }, @@ -10469,17 +11402,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(go_goroutines{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "expr": "sum(istio_build{component=\"mixer\"}) by (tag)", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Number of Goroutines ({{ job }})", + "intervalFactor": 1, + "legendFormat": "{{ tag }}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Goroutines", + "title": "Mixer Versions", "tooltip": { "shared": true, "sort": 0, @@ -10496,7 +11429,7 @@ data: "yaxes": [ { "format": "short", - "label": "", + "label": null, "logBase": 1, "max": null, "min": null, @@ -10508,7 +11441,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -10517,15 +11450,15 @@ data: } }, { - "content": "

Mixer Overview

", + "content": "

Resource Usage

", "gridPos": { "h": 3, "w": 24, "x": 0, - "y": 18 + "y": 8 }, - "height": "40px", - "id": 30, + "height": "40", + "id": 29, "links": [], "mode": "html", "title": "", @@ -10540,12 +11473,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, + "h": 7, "w": 6, "x": 0, - "y": 21 + "y": 11 }, - "id": 9, + "id": 5, "legend": { "avg": false, "current": false, @@ -10569,25 +11502,79 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(grpc_io_server_completed_rpcs[1m]))", + "expr": "sum(process_virtual_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "instant": false, + "intervalFactor": 2, + "legendFormat": "Virtual Memory ({{ job }})", + "refId": "I" + }, + { + "expr": "sum(process_resident_memory_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory ({{ job }})", + "refId": "H" + }, + { + "expr": "sum(go_memstats_heap_sys_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys ({{ job }})", + "refId": "A" + }, + { + "expr": "sum(go_memstats_heap_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc ({{ job }})", + "refId": "D" + }, + { + "expr": "sum(go_memstats_alloc_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc ({{ job }})", + "refId": "F" + }, + { + "expr": "sum(go_memstats_heap_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", "format": "time_series", "hide": false, "intervalFactor": 2, - "legendFormat": "mixer (Total)", - "refId": "B" + "legendFormat": "Heap in-use ({{ job }})", + "refId": "E" }, { - "expr": "sum(rate(grpc_io_server_completed_rpcs[1m])) by (grpc_server_method)", + "expr": "sum(go_memstats_stack_inuse_bytes{job=~\"istio-telemetry|istio-policy\"}) by (job)", "format": "time_series", "intervalFactor": 2, - "legendFormat": "mixer ({{ grpc_server_method }})", + "legendFormat": "Stack in-use ({{ job }})", + "refId": "G" + }, + { + "expr": "sum(label_replace(container_memory_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (service)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ service }} total (k8s)", "refId": "C" + }, + { + "expr": "sum(label_replace(container_memory_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (container_name, service)", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{ service }} - {{ container_name }} (k8s)", + "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Incoming Requests", + "title": "Memory", "tooltip": { "shared": true, "sort": 0, @@ -10603,7 +11590,7 @@ data: }, "yaxes": [ { - "format": "ops", + "format": "bytes", "label": null, "logBase": 1, "max": null, @@ -10632,12 +11619,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, + "h": 7, "w": 6, "x": 6, - "y": 21 + "y": 11 }, - "id": 8, + "id": 6, "legend": { "avg": false, "current": false, @@ -10655,42 +11642,40 @@ data: "pointradius": 5, "points": false, "renderer": "flot", - "seriesOverrides": [ - { - "alias": "{}", - "yaxis": 1 - } - ], + "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.5, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", + "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (pod_name), \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")", "format": "time_series", + "hide": false, "intervalFactor": 2, - "legendFormat": "{{ grpc_server_method }} 0.5", - "refId": "B" + "legendFormat": "{{ service }} total (k8s)", + "refId": "A" }, { - "expr": "histogram_quantile(0.9, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", + "expr": "label_replace(sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}[1m])) by (container_name, pod_name), \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")", "format": "time_series", + "hide": false, "intervalFactor": 2, - "legendFormat": "{{ grpc_server_method }} 0.9", - "refId": "C" + "legendFormat": "{{ service }} - {{ container_name }} (k8s)", + "refId": "B" }, { - "expr": "histogram_quantile(0.99, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", + "expr": "sum(irate(process_cpu_seconds_total{job=~\"istio-telemetry|istio-policy\"}[1m])) by (job)", "format": "time_series", + "hide": false, "intervalFactor": 2, - "legendFormat": "{{ grpc_server_method }} 0.99", - "refId": "D" + "legendFormat": "{{ job }} (self-reported)", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Response Durations", + "title": "CPU", "tooltip": { "shared": true, "sort": 0, @@ -10706,7 +11691,7 @@ data: }, "yaxes": [ { - "format": "ms", + "format": "short", "label": null, "logBase": 1, "max": null, @@ -10719,7 +11704,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -10735,12 +11720,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, + "h": 7, "w": 6, "x": 12, - "y": 21 + "y": 11 }, - "id": 11, + "id": 7, "legend": { "avg": false, "current": false, @@ -10764,17 +11749,27 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(grpc_server_handled_total{grpc_code=~\"Unknown|Unimplemented|Internal|DataLoss\"}[1m])) by (grpc_method)", + "expr": "sum(process_open_fds{job=~\"istio-telemetry|istio-policy\"}) by (job)", + "format": "time_series", + "hide": true, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open FDs ({{ job }})", + "refId": "A" + }, + { + "expr": "sum(label_replace(container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"mixer|istio-proxy\", pod_name=~\"istio-telemetry-.*|istio-policy-.*\"}, \"service\", \"$1\" , \"pod_name\", \"(istio-telemetry|istio-policy)-.*\")) by (container_name, service)", "format": "time_series", "intervalFactor": 2, - "legendFormat": "Mixer {{ grpc_method }}", + "legendFormat": "{{ service }} - {{ container_name }}", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Server Error Rate (5xx responses)", + "title": "Disk", "tooltip": { "shared": true, "sort": 0, @@ -10790,20 +11785,21 @@ data: }, "yaxes": [ { - "format": "short", - "label": null, + "format": "bytes", + "label": "", "logBase": 1, "max": null, "min": null, "show": true }, { - "format": "short", - "label": null, - "logBase": 1, + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -10819,18 +11815,18 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, + "h": 7, "w": 6, "x": 18, - "y": 21 + "y": 11 }, - "id": 12, + "id": 4, "legend": { "avg": false, "current": false, "max": false, "min": false, - "show": true, + "show": false, "total": false, "values": false }, @@ -10848,17 +11844,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(grpc_server_handled_total{grpc_code!=\"OK\",grpc_service=~\".*Mixer\"}[1m])) by (grpc_method)", + "expr": "sum(go_goroutines{job=~\"istio-telemetry|istio-policy\"}) by (job)", "format": "time_series", "intervalFactor": 2, - "legendFormat": "Mixer {{ grpc_method }}", - "refId": "B" + "legendFormat": "Number of Goroutines ({{ job }})", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Non-successes (4xxs)", + "title": "Goroutines", "tooltip": { "shared": true, "sort": 0, @@ -10875,7 +11871,7 @@ data: "yaxes": [ { "format": "short", - "label": null, + "label": "", "logBase": 1, "max": null, "min": null, @@ -10896,14 +11892,15 @@ data: } }, { - "content": "

Adapters and Config

", + "content": "

Mixer Overview

", "gridPos": { "h": 3, "w": 24, "x": 0, - "y": 27 + "y": 18 }, - "id": 28, + "height": "40px", + "id": 30, "links": [], "mode": "html", "title": "", @@ -10918,12 +11915,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 12, + "h": 6, + "w": 6, "x": 0, - "y": 30 + "y": 21 }, - "id": 13, + "id": 9, "legend": { "avg": false, "current": false, @@ -10947,17 +11944,25 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m])) by (adapter)", + "expr": "sum(rate(grpc_io_server_completed_rpcs[1m]))", "format": "time_series", + "hide": false, "intervalFactor": 2, - "legendFormat": "{{ adapter }}", - "refId": "A" + "legendFormat": "mixer (Total)", + "refId": "B" + }, + { + "expr": "sum(rate(grpc_io_server_completed_rpcs[1m])) by (grpc_server_method)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "mixer ({{ grpc_server_method }})", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Adapter Dispatch Count", + "title": "Incoming Requests", "tooltip": { "shared": true, "sort": 0, @@ -10973,7 +11978,7 @@ data: }, "yaxes": [ { - "format": "short", + "format": "ops", "label": null, "logBase": 1, "max": null, @@ -11002,12 +12007,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 + "h": 6, + "w": 6, + "x": 6, + "y": 21 }, - "id": 14, + "id": 8, "legend": { "avg": false, "current": false, @@ -11025,40 +12030,45 @@ data: "pointradius": 5, "points": false, "renderer": "flot", - "seriesOverrides": [], + "seriesOverrides": [ + { + "alias": "{}", + "yaxis": 1 + } + ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { - "expr": "histogram_quantile(0.5, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "expr": "histogram_quantile(0.5, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", "format": "time_series", "intervalFactor": 2, - "legendFormat": "{{ adapter }} - p50", - "refId": "A" + "legendFormat": "{{ grpc_server_method }} 0.5", + "refId": "B" }, { - "expr": "histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "expr": "histogram_quantile(0.9, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", "format": "time_series", "intervalFactor": 2, - "legendFormat": "{{ adapter }} - p90 ", - "refId": "B" + "legendFormat": "{{ grpc_server_method }} 0.9", + "refId": "C" }, { - "expr": "histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "expr": "histogram_quantile(0.99, sum(rate(grpc_io_server_server_latency_bucket{}[1m])) by (grpc_server_method, le))", "format": "time_series", "intervalFactor": 2, - "legendFormat": "{{ adapter }} - p99", - "refId": "C" + "legendFormat": "{{ grpc_server_method }} 0.99", + "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Adapter Dispatch Duration", + "title": "Response Durations", "tooltip": { "shared": true, - "sort": 1, + "sort": 0, "value_type": "individual" }, "type": "graph", @@ -11071,7 +12081,7 @@ data: }, "yaxes": [ { - "format": "s", + "format": "ms", "label": null, "logBase": 1, "max": null, @@ -11100,12 +12110,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, + "h": 6, "w": 6, - "x": 0, - "y": 37 + "x": 12, + "y": 21 }, - "id": 60, + "id": 11, "legend": { "avg": false, "current": false, @@ -11129,38 +12139,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "scalar(topk(1, max(mixer_config_rule_config_count) by (configID)))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Rules", - "refId": "A" - }, - { - "expr": "scalar(topk(1, max(mixer_config_rule_config_error_count) by (configID)))", + "expr": "sum(rate(grpc_server_handled_total{grpc_code=~\"Unknown|Unimplemented|Internal|DataLoss\"}[1m])) by (grpc_method)", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Config Errors", + "intervalFactor": 2, + "legendFormat": "Mixer {{ grpc_method }}", "refId": "B" - }, - { - "expr": "scalar(topk(1, max(mixer_config_rule_config_match_error_count) by (configID)))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Match Errors", - "refId": "C" - }, - { - "expr": "scalar(topk(1, max(mixer_config_unsatisfied_action_handler_count) by (configID)))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Unsatisfied Actions", - "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Rules", + "title": "Server Error Rate (5xx responses)", "tooltip": { "shared": true, "sort": 0, @@ -11205,12 +12194,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, + "h": 6, "w": 6, - "x": 6, - "y": 37 + "x": 18, + "y": 21 }, - "id": 56, + "id": 12, "legend": { "avg": false, "current": false, @@ -11234,17 +12223,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "scalar(topk(1, max(mixer_config_instance_config_count) by (configID)))", + "expr": "sum(irate(grpc_server_handled_total{grpc_code!=\"OK\",grpc_service=~\".*Mixer\"}[1m])) by (grpc_method)", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Instances", - "refId": "A" + "intervalFactor": 2, + "legendFormat": "Mixer {{ grpc_method }}", + "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Instances in Latest Config", + "title": "Non-successes (4xxs)", "tooltip": { "shared": true, "sort": 0, @@ -11281,6 +12270,21 @@ data: "alignLevel": null } }, + { + "content": "

Adapters and Config

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 27 + }, + "id": 28, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, { "aliasColors": {}, "bars": false, @@ -11290,11 +12294,11 @@ data: "fill": 1, "gridPos": { "h": 7, - "w": 6, - "x": 12, - "y": 37 + "w": 12, + "x": 0, + "y": 30 }, - "id": 54, + "id": 13, "legend": { "avg": false, "current": false, @@ -11318,17 +12322,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "scalar(topk(1, max(mixer_config_handler_config_count) by (configID)))", + "expr": "sum(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m])) by (adapter)", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Handlers", + "intervalFactor": 2, + "legendFormat": "{{ adapter }}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Handlers in Latest Config", + "title": "Adapter Dispatch Count", "tooltip": { "shared": true, "sort": 0, @@ -11357,7 +12361,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -11374,11 +12378,11 @@ data: "fill": 1, "gridPos": { "h": 7, - "w": 6, - "x": 18, - "y": 37 + "w": 12, + "x": 12, + "y": 30 }, - "id": 58, + "id": 14, "legend": { "avg": false, "current": false, @@ -11402,21 +12406,34 @@ data: "steppedLine": false, "targets": [ { - "expr": "scalar(topk(1, max(mixer_config_attribute_count) by (configID)))", + "expr": "histogram_quantile(0.5, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", "format": "time_series", - "instant": false, - "intervalFactor": 1, - "legendFormat": "Attributes", + "intervalFactor": 2, + "legendFormat": "{{ adapter }} - p50", "refId": "A" + }, + { + "expr": "histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ adapter }} - p90 ", + "refId": "B" + }, + { + "expr": "histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (adapter, le))", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{ adapter }} - p99", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Attributes in Latest Config", + "title": "Adapter Dispatch Duration", "tooltip": { "shared": true, - "sort": 0, + "sort": 1, "value_type": "individual" }, "type": "graph", @@ -11429,7 +12446,7 @@ data: }, "yaxes": [ { - "format": "short", + "format": "s", "label": null, "logBase": 1, "max": null, @@ -11442,7 +12459,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -11450,35 +12467,6 @@ data: "alignLevel": null } }, - { - "content": "

Individual Adapters

", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 44 - }, - "id": 23, - "links": [], - "mode": "html", - "title": "", - "transparent": true, - "type": "text" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 47 - }, - "id": 46, - "panels": [], - "repeat": "adapter", - "title": "$adapter Adapter", - "type": "row" - }, { "aliasColors": {}, "bars": false, @@ -11488,11 +12476,11 @@ data: "fill": 1, "gridPos": { "h": 7, - "w": 12, + "w": 6, "x": 0, - "y": 48 + "y": 37 }, - "id": 17, + "id": 60, "legend": { "avg": false, "current": false, @@ -11516,17 +12504,38 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m]),\"handler\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "expr": "scalar(topk(1, max(mixer_config_rule_config_count) by (configID)))", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ handler }} (error: {{ error }})", + "intervalFactor": 1, + "legendFormat": "Rules", "refId": "A" + }, + { + "expr": "scalar(topk(1, max(mixer_config_rule_config_error_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Config Errors", + "refId": "B" + }, + { + "expr": "scalar(topk(1, max(mixer_config_rule_config_match_error_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Match Errors", + "refId": "C" + }, + { + "expr": "scalar(topk(1, max(mixer_config_unsatisfied_action_handler_count) by (configID)))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Unsatisfied Actions", + "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Dispatch Count By Handler", + "title": "Rules", "tooltip": { "shared": true, "sort": 0, @@ -11555,7 +12564,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -11572,11 +12581,11 @@ data: "fill": 1, "gridPos": { "h": 7, - "w": 12, - "x": 12, - "y": 48 + "w": 6, + "x": 6, + "y": 37 }, - "id": 18, + "id": 56, "legend": { "avg": false, "current": false, @@ -11600,31 +12609,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(histogram_quantile(0.5, sum(rate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "expr": "scalar(topk(1, max(mixer_config_instance_config_count) by (configID)))", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "p50 - {{ handler_short }} (error: {{ error }})", + "intervalFactor": 1, + "legendFormat": "Instances", "refId": "A" - }, - { - "expr": "label_replace(histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "p90 - {{ handler_short }} (error: {{ error }})", - "refId": "D" - }, - { - "expr": "label_replace(histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "p99 - {{ handler_short }} (error: {{ error }})", - "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeShift": null, - "title": "Dispatch Duration By Handler", + "title": "Instances in Latest Config", "tooltip": { "shared": true, "sort": 0, @@ -11640,7 +12635,7 @@ data: }, "yaxes": [ { - "format": "s", + "format": "short", "label": null, "logBase": 1, "max": null, @@ -11660,115 +12655,6 @@ data: "align": false, "alignLevel": null } - } - ], - "refresh": "5s", - "schemaVersion": 16, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "Prometheus", - "hide": 0, - "includeAll": true, - "label": "Adapter", - "multi": true, - "name": "adapter", - "options": [], - "query": "label_values(adapter)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Istio Mixer Dashboard", - "version": 4 -} -' ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-grafana-configuration-dashboards-pilot-dashboard - namespace: istio-system - labels: - app: grafana - chart: grafana - heritage: Tiller - release: istio - istio: grafana -data: - pilot-dashboard.json: '{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 1, - "id": 6, - "links": [], - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 60, - "panels": [], - "title": "Deployed Versions", - "type": "row" }, { "aliasColors": {}, @@ -11778,12 +12664,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 5, - "w": 24, - "x": 0, - "y": 1 + "h": 7, + "w": 6, + "x": 12, + "y": 37 }, - "id": 56, + "id": 54, "legend": { "avg": false, "current": false, @@ -11807,18 +12693,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(istio_build{component=\"pilot\"}) by (tag)", + "expr": "scalar(topk(1, max(mixer_config_handler_config_count) by (configID)))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ tag }}", + "legendFormat": "Handlers", "refId": "A" } ], "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Pilot Versions", + "title": "Handlers in Latest Config", "tooltip": { "shared": true, "sort": 0, @@ -11847,7 +12732,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -11855,19 +12740,6 @@ data: "alignLevel": null } }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 6 - }, - "id": 62, - "panels": [], - "title": "Resource Usage", - "type": "row" - }, { "aliasColors": {}, "bars": false, @@ -11878,10 +12750,10 @@ data: "gridPos": { "h": 7, "w": 6, - "x": 0, - "y": 7 + "x": 18, + "y": 37 }, - "id": 5, + "id": 58, "legend": { "avg": false, "current": false, @@ -11905,87 +12777,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "process_virtual_memory_bytes{job=\"pilot\"}", + "expr": "scalar(topk(1, max(mixer_config_attribute_count) by (configID)))", "format": "time_series", "instant": false, - "intervalFactor": 2, - "legendFormat": "Virtual Memory", - "refId": "I", - "step": 2 - }, - { - "expr": "process_resident_memory_bytes{job=\"pilot\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Resident Memory", - "refId": "H", - "step": 2 - }, - { - "expr": "go_memstats_heap_sys_bytes{job=\"pilot\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap sys", + "intervalFactor": 1, + "legendFormat": "Attributes", "refId": "A" - }, - { - "expr": "go_memstats_heap_alloc_bytes{job=\"pilot\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "heap alloc", - "refId": "D" - }, - { - "expr": "go_memstats_alloc_bytes{job=\"pilot\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Alloc", - "refId": "F", - "step": 2 - }, - { - "expr": "go_memstats_heap_inuse_bytes{job=\"pilot\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Heap in-use", - "refId": "E", - "step": 2 - }, - { - "expr": "go_memstats_stack_inuse_bytes{job=\"pilot\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Stack in-use", - "refId": "G", - "step": 2 - }, - { - "expr": "sum(container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", - "refId": "C", - "step": 2 - }, - { - "expr": "container_memory_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 } ], "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Memory", + "title": "Attributes in Latest Config", "tooltip": { "shared": true, "sort": 0, @@ -12001,7 +12804,7 @@ data: }, "yaxes": [ { - "format": "bytes", + "format": "short", "label": null, "logBase": 1, "max": null, @@ -12014,7 +12817,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -12022,6 +12825,35 @@ data: "alignLevel": null } }, + { + "content": "

Individual Adapters

", + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 44 + }, + "id": 23, + "links": [], + "mode": "html", + "title": "", + "transparent": true, + "type": "text" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 47 + }, + "id": 46, + "panels": [], + "repeat": "adapter", + "title": "$adapter Adapter", + "type": "row" + }, { "aliasColors": {}, "bars": false, @@ -12031,11 +12863,11 @@ data: "fill": 1, "gridPos": { "h": 7, - "w": 6, - "x": 6, - "y": 7 + "w": 12, + "x": 0, + "y": 48 }, - "id": 6, + "id": 17, "legend": { "avg": false, "current": false, @@ -12059,38 +12891,17 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Total (k8s)", - "refId": "A", - "step": 2 - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m])) by (container_name)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{ container_name }} (k8s)", - "refId": "B", - "step": 2 - }, - { - "expr": "irate(process_cpu_seconds_total{job=\"pilot\"}[1m])", + "expr": "label_replace(irate(mixer_runtime_dispatches_total{adapter=~\"$adapter\"}[1m]),\"handler\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", "format": "time_series", - "hide": false, "intervalFactor": 2, - "legendFormat": "pilot (self-reported)", - "refId": "C", - "step": 2 + "legendFormat": "{{ handler }} (error: {{ error }})", + "refId": "A" } ], "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "CPU", + "title": "Dispatch Count By Handler", "tooltip": { "shared": true, "sort": 0, @@ -12119,7 +12930,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -12136,11 +12947,11 @@ data: "fill": 1, "gridPos": { "h": 7, - "w": 6, + "w": 12, "x": 12, - "y": 7 + "y": 48 }, - "id": 7, + "id": 18, "legend": { "avg": false, "current": false, @@ -12164,29 +12975,31 @@ data: "steppedLine": false, "targets": [ { - "expr": "process_open_fds{job=\"pilot\"}", + "expr": "label_replace(histogram_quantile(0.5, sum(rate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", "format": "time_series", - "hide": true, - "instant": false, - "interval": "", "intervalFactor": 2, - "legendFormat": "Open FDs (pilot)", + "legendFormat": "p50 - {{ handler_short }} (error: {{ error }})", "refId": "A" }, { - "expr": "container_fs_usage_bytes{container_name=~\"discovery|istio-proxy\", pod_name=~\"istio-pilot-.*\"}", + "expr": "label_replace(histogram_quantile(0.9, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", "format": "time_series", "intervalFactor": 2, - "legendFormat": "{{ container_name }}", - "refId": "B", - "step": 2 + "legendFormat": "p90 - {{ handler_short }} (error: {{ error }})", + "refId": "D" + }, + { + "expr": "label_replace(histogram_quantile(0.99, sum(irate(mixer_runtime_dispatch_duration_seconds_bucket{adapter=~\"$adapter\"}[1m])) by (handler, error, le)), \"handler_short\", \"$1 ($3)\", \"handler\", \"(.*)\\\\.(.*)\\\\.(.*)\")", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "p99 - {{ handler_short }} (error: {{ error }})", + "refId": "E" } ], "thresholds": [], "timeFrom": null, - "timeRegions": [], "timeShift": null, - "title": "Disk", + "title": "Dispatch Duration By Handler", "tooltip": { "shared": true, "sort": 0, @@ -12202,27 +13015,135 @@ data: }, "yaxes": [ { - "format": "bytes", - "label": "", + "format": "s", + "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { - "decimals": null, - "format": "none", - "label": "", - "logBase": 1024, + "format": "short", + "label": null, + "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { "align": false, "alignLevel": null } + } + ], + "refresh": "5s", + "schemaVersion": 16, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "Prometheus", + "hide": 0, + "includeAll": true, + "label": "Adapter", + "multi": true, + "name": "adapter", + "options": [], + "query": "label_values(adapter)", + "refresh": 2, + "regex": "", + "sort": 1, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-5m", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Istio Mixer Dashboard", + "version": 4 +} +' +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: istio-grafana-configuration-dashboards-pilot-dashboard + namespace: istio-system + labels: + app: grafana + chart: grafana + heritage: Tiller + release: istio + istio: grafana +data: + pilot-dashboard.json: '{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": false, + "gnetId": null, + "graphTooltip": 1, + "id": 11, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 60, + "panels": [], + "title": "Deployed Versions", + "type": "row" }, { "aliasColors": {}, @@ -12232,18 +13153,18 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 7 + "h": 5, + "w": 24, + "x": 0, + "y": 1 }, - "id": 4, + "id": 56, "legend": { "avg": false, "current": false, "max": false, "min": false, - "show": false, + "show": true, "total": false, "values": false }, @@ -12261,19 +13182,18 @@ data: "steppedLine": false, "targets": [ { - "expr": "go_goroutines{job=\"pilot\"}", + "expr": "sum(istio_build{component=\"pilot\"}) by (tag)", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Number of Goroutines", - "refId": "A", - "step": 2 + "intervalFactor": 1, + "legendFormat": "{{ tag }}", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Goroutines", + "title": "Pilot Versions", "tooltip": { "shared": true, "sort": 0, @@ -12290,7 +13210,7 @@ data: "yaxes": [ { "format": "short", - "label": "", + "label": null, "logBase": 1, "max": null, "min": null, @@ -12302,7 +13222,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -12316,27 +13236,27 @@ data: "h": 1, "w": 24, "x": 0, - "y": 14 + "y": 6 }, - "id": 58, + "id": 62, "panels": [], - "title": "Pilot Push Information", + "title": "Resource Usage", "type": "row" }, { "aliasColors": {}, - "bars": true, + "bars": false, "dashLength": 10, "dashes": false, - "description": "Shows pilot pushes", + "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 6, "x": 0, - "y": 15 + "y": 7 }, - "id": 622, + "id": 5, "legend": { "avg": false, "current": false, @@ -12346,38 +13266,101 @@ data: "total": false, "values": false }, - "lines": false, + "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, + "nullPointMode": "null", "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "stack": true, + "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(rate(pilot_xds_pushes{type!~\".*_senderr\"}[1m])) by (type)", + "expr": "process_virtual_memory_bytes{job=\"pilot\"}", "format": "time_series", "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ type }}", + "intervalFactor": 2, + "legendFormat": "Virtual Memory", + "refId": "I", + "step": 2 + }, + { + "expr": "process_resident_memory_bytes{job=\"pilot\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Resident Memory", + "refId": "H", + "step": 2 + }, + { + "expr": "go_memstats_heap_sys_bytes{job=\"pilot\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap sys", + "refId": "A" + }, + { + "expr": "go_memstats_heap_alloc_bytes{job=\"pilot\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "heap alloc", + "refId": "D" + }, + { + "expr": "go_memstats_alloc_bytes{job=\"pilot\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Alloc", + "refId": "F", + "step": 2 + }, + { + "expr": "go_memstats_heap_inuse_bytes{job=\"pilot\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Heap in-use", + "refId": "E", + "step": 2 + }, + { + "expr": "go_memstats_stack_inuse_bytes{job=\"pilot\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Stack in-use", + "refId": "G", + "step": 2 + }, + { + "expr": "container_memory_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"discovery\", pod_name=~\"istio-pilot-.*\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "Discovery (container)", "refId": "B", "step": 2 + }, + { + "expr": "container_memory_usage_bytes{job=\"kubernetes-cadvisor\", container_name=~\"istio-proxy\", pod_name=~\"istio-pilot-.*\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Sidecar (container)", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Pilot Pushes", + "title": "Memory", "tooltip": { - "shared": false, + "shared": true, "sort": 0, "value_type": "individual" }, @@ -12387,17 +13370,15 @@ data: "mode": "time", "name": null, "show": true, - "values": [ - "total" - ] + "values": [] }, "yaxes": [ { - "format": "ops", + "format": "bytes", "label": null, "logBase": 1, "max": null, - "min": "0", + "min": null, "show": true }, { @@ -12420,15 +13401,14 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", - "description": "Captures a variety of pilot errors", "fill": 1, "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 15 + "h": 7, + "w": 6, + "x": 6, + "y": 7 }, - "id": 67, + "id": 6, "legend": { "avg": false, "current": false, @@ -12452,49 +13432,36 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(sum(pilot_xds_cds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")", + "expr": "sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=\"discovery\", pod_name=~\"istio-pilot-.*\"}[1m]))", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "Rejected CDS Configs - {{ node }}: {{ err }}", - "refId": "C" + "legendFormat": "Discovery (container)", + "refId": "A" }, { - "expr": "pilot_xds_eds_reject{job=\"pilot\"}", + "expr": "irate(process_cpu_seconds_total{job=\"pilot\"}[1m])", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "Rejected EDS Configs", - "refId": "D" - }, - { - "expr": "rate(pilot_xds_write_timeout{job=\"pilot\"}[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Write Timeouts", - "refId": "F" - }, - { - "expr": "rate(pilot_xds_push_timeout{job=\"pilot\"}[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Push Timeouts", - "refId": "G" + "intervalFactor": 2, + "legendFormat": "Discovery (process)", + "refId": "C", + "step": 2 }, { - "expr": "sum(rate(pilot_xds_push_errors{job=\"pilot\"}[1m]))", + "expr": "sum(irate(container_cpu_usage_seconds_total{job=\"kubernetes-cadvisor\",container_name=\"istio-proxy\", pod_name=~\"istio-pilot-.*\"}[1m]))", "format": "time_series", "hide": false, - "intervalFactor": 1, - "legendFormat": "Push Errors ({{ type }})", - "refId": "I" + "intervalFactor": 2, + "legendFormat": "Sidecar (container)", + "refId": "B", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Pilot Errors", + "title": "CPU", "tooltip": { "shared": true, "sort": 0, @@ -12531,19 +13498,6 @@ data: "alignLevel": null } }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 64, - "panels": [], - "title": "xDS", - "type": "row" - }, { "aliasColors": {}, "bars": false, @@ -12551,13 +13505,13 @@ data: "dashes": false, "datasource": "Prometheus", "fill": 1, - "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 24 + "gridPos": { + "h": 7, + "w": 6, + "x": 12, + "y": 7 }, - "id": 40, + "id": 7, "legend": { "avg": false, "current": false, @@ -12581,19 +13535,26 @@ data: "steppedLine": false, "targets": [ { - "expr": "sum(irate(envoy_cluster_update_success{cluster_name=\"xds-grpc\"}[1m]))", + "expr": "container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container_name=\"discovery\", pod_name=~\"istio-pilot-.*\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Discovery", + "refId": "B", + "step": 2 + }, + { + "expr": "container_fs_usage_bytes{job=\"kubernetes-cadvisor\", container_name=\"istio-proxy\", pod_name=~\"istio-pilot-.*\"}", "format": "time_series", - "hide": false, "intervalFactor": 1, - "legendFormat": "XDS GRPC Successes", - "refId": "C" + "legendFormat": "Sidecar", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Updates", + "title": "Disk", "tooltip": { "shared": true, "sort": 0, @@ -12609,17 +13570,18 @@ data: }, "yaxes": [ { - "format": "ops", - "label": null, + "format": "bytes", + "label": "", "logBase": 1, "max": null, "min": null, "show": true }, { - "format": "ops", - "label": null, - "logBase": 1, + "decimals": null, + "format": "none", + "label": "", + "logBase": 1024, "max": null, "min": null, "show": false @@ -12638,18 +13600,18 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 24 + "h": 7, + "w": 6, + "x": 18, + "y": 7 }, - "id": 42, + "id": 4, "legend": { "avg": false, "current": false, "max": false, "min": false, - "show": true, + "show": false, "total": false, "values": false }, @@ -12667,10 +13629,10 @@ data: "steppedLine": false, "targets": [ { - "expr": "round(sum(rate(envoy_cluster_update_attempt{cluster_name=\"xds-grpc\"}[1m])) - sum(rate(envoy_cluster_update_success{cluster_name=\"xds-grpc\"}[1m])))", + "expr": "go_goroutines{job=\"pilot\"}", "format": "time_series", "intervalFactor": 2, - "legendFormat": "XDS GRPC ", + "legendFormat": "Number of Goroutines", "refId": "A", "step": 2 } @@ -12679,7 +13641,7 @@ data: "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Failures", + "title": "Goroutines", "tooltip": { "shared": true, "sort": 0, @@ -12695,8 +13657,8 @@ data: }, "yaxes": [ { - "format": "ops", - "label": null, + "format": "short", + "label": "", "logBase": 1, "max": null, "min": null, @@ -12708,7 +13670,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": false + "show": true } ], "yaxis": { @@ -12716,20 +13678,33 @@ data: "alignLevel": null } }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, + "id": 58, + "panels": [], + "title": "Pilot Push Information", + "type": "row" + }, { "aliasColors": {}, - "bars": false, + "bars": true, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "Shows the rate of pilot pushes", "fill": 1, "gridPos": { - "h": 6, + "h": 8, "w": 8, - "x": 16, - "y": 24 + "x": 0, + "y": 15 }, - "id": 41, + "id": 622, "legend": { "avg": false, "current": false, @@ -12739,35 +13714,56 @@ data: "total": false, "values": false }, - "lines": true, + "lines": false, "linewidth": 1, "links": [], - "nullPointMode": "null", + "nullPointMode": "null as zero", + "paceLength": 10, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "stack": false, + "stack": true, "steppedLine": false, "targets": [ { - "expr": "sum(envoy_cluster_upstream_cx_active{cluster_name=\"xds-grpc\"})", + "expr": "sum(irate(pilot_xds_pushes{type=\"cds\"}[1m]))", "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Pilot (XDS GRPC)", - "refId": "C", - "step": 2 + "intervalFactor": 1, + "legendFormat": "Cluster", + "refId": "C" + }, + { + "expr": "sum(irate(pilot_xds_pushes{type=\"eds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Endpoints", + "refId": "D" + }, + { + "expr": "sum(irate(pilot_xds_pushes{type=\"lds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Listeners", + "refId": "A" + }, + { + "expr": "sum(irate(pilot_xds_pushes{type=\"rds\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Routes", + "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Active Connections", + "title": "Pilot Pushes", "tooltip": { - "shared": true, + "shared": false, "sort": 0, "value_type": "individual" }, @@ -12777,15 +13773,17 @@ data: "mode": "time", "name": null, "show": true, - "values": [] + "values": [ + "total" + ] }, "yaxes": [ { - "format": "short", + "format": "ops", "label": null, "logBase": 1, "max": null, - "min": null, + "min": "0", "show": true }, { @@ -12794,7 +13792,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -12808,17 +13806,20 @@ data: "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "Captures a variety of pilot errors", "fill": 1, "gridPos": { "h": 8, "w": 8, - "x": 0, - "y": 30 + "x": 8, + "y": 15 }, - "id": 45, + "id": 67, "legend": { "avg": false, "current": false, + "hideEmpty": true, + "hideZero": true, "max": false, "min": false, "show": true, @@ -12839,39 +13840,103 @@ data: "steppedLine": false, "targets": [ { - "expr": "pilot_conflict_inbound_listener{job=\"pilot\"}", + "expr": "sum(pilot_xds_cds_reject{job=\"pilot\"}) or (absent(pilot_xds_cds_reject{job=\"pilot\"}) - 1)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "Inbound Listeners", - "refId": "B" + "legendFormat": "Rejected CDS Configs", + "refId": "C" }, { - "expr": "pilot_conflict_outbound_listener_http_over_current_tcp{job=\"pilot\"}", + "expr": "sum(pilot_xds_eds_reject{job=\"pilot\"}) or (absent(pilot_xds_eds_reject{job=\"pilot\"}) - 1)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "Outbound Listeners (http over current tcp)", + "legendFormat": "Rejected EDS Configs", + "refId": "D" + }, + { + "expr": "sum(pilot_xds_rds_reject{job=\"pilot\"}) or (absent(pilot_xds_rds_reject{job=\"pilot\"}) - 1)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Rejected RDS Configs", "refId": "A" }, { - "expr": "pilot_conflict_outbound_listener_tcp_over_current_tcp{job=\"pilot\"}", + "expr": "sum(pilot_xds_lds_reject{job=\"pilot\"}) or (absent(pilot_xds_lds_reject{job=\"pilot\"}) - 1)", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "Outbound Listeners (tcp over current tcp)", - "refId": "C" + "legendFormat": "Rejected LDS Configs", + "refId": "B" }, { - "expr": "pilot_conflict_outbound_listener_tcp_over_current_http{job=\"pilot\"}", + "expr": "sum(rate(pilot_xds_write_timeout{job=\"pilot\"}[1m]))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Outbound Listeners (tcp over current http)", - "refId": "D" + "legendFormat": "Write Timeouts", + "refId": "F" + }, + { + "expr": "sum(rate(pilot_total_xds_internal_errors{job=\"pilot\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Internal Errors", + "refId": "H" + }, + { + "expr": "sum(rate(pilot_total_xds_rejects{job=\"pilot\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Config Rejection Rate", + "refId": "E" + }, + { + "expr": "sum(rate(pilot_xds_push_context_errors{job=\"pilot\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Push Context Errors", + "refId": "K" + }, + { + "expr": "sum(rate(pilot_xds_pushes{type!~\"lds|cds|rds|eds\"}[1m])) by (type)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Push Errors ({{ type }})", + "refId": "L" + }, + { + "expr": "sum(rate(pilot_xds_push_errors{job=\"pilot\"}[1m])) by (type)", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Push Errors ({{ type }})", + "refId": "I" + }, + { + "expr": "sum(rate(pilot_xds_push_timeout{job=\"pilot\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Push Timeouts", + "refId": "G" + }, + { + "expr": "sum(rate(pilot_xds_push_timeout_failures{job=\"pilot\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Push Timeouts Failures", + "refId": "J" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Conflicts", + "title": "Pilot Errors", "tooltip": { "shared": true, "sort": 0, @@ -12913,15 +13978,15 @@ data: "bars": false, "dashLength": 10, "dashes": false, - "datasource": "Prometheus", + "description": "Shows the total time it takes to push a config update to a proxy", "fill": 1, "gridPos": { "h": 8, "w": 8, - "x": 8, - "y": 30 + "x": 16, + "y": 15 }, - "id": 47, + "id": 624, "legend": { "avg": false, "current": false, @@ -12936,7 +14001,7 @@ data: "links": [], "nullPointMode": "null", "percentage": false, - "pointradius": 5, + "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], @@ -12945,76 +14010,39 @@ data: "steppedLine": false, "targets": [ { - "expr": "pilot_virt_services{job=\"pilot\"}", + "expr": "histogram_quantile(0.5, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Virtual Services", + "legendFormat": "p50 ", "refId": "A" }, { - "expr": "pilot_services{job=\"pilot\"}", + "expr": "histogram_quantile(0.9, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "Services", + "legendFormat": "p90", "refId": "B" }, { - "expr": "label_replace(sum(pilot_xds_cds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")", + "expr": "histogram_quantile(0.99, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", "format": "time_series", - "hide": true, "intervalFactor": 1, - "legendFormat": "Rejected CDS Configs - {{ node }}: {{ err }}", + "legendFormat": "p99", "refId": "C" }, { - "expr": "pilot_xds_eds_reject{job=\"pilot\"}", + "expr": "histogram_quantile(0.999, sum(rate(pilot_proxy_convergence_time_bucket[1m])) by (le))", "format": "time_series", - "hide": true, "intervalFactor": 1, - "legendFormat": "Rejected EDS Configs", + "legendFormat": "p99.9", "refId": "D" - }, - { - "expr": "pilot_xds{job=\"pilot\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Connected Endpoints", - "refId": "E" - }, - { - "expr": "rate(pilot_xds_write_timeout{job=\"pilot\"}[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Write Timeouts", - "refId": "F" - }, - { - "expr": "rate(pilot_xds_push_timeout{job=\"pilot\"}[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Push Timeouts", - "refId": "G" - }, - { - "expr": "rate(pilot_xds_pushes{job=\"pilot\"}[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Pushes ({{ type }})", - "refId": "H" - }, - { - "expr": "rate(pilot_xds_push_errors{job=\"pilot\"}[1m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Push Errors ({{ type }})", - "refId": "I" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "ADS Monitoring", + "title": "Proxy Push Time", "tooltip": { "shared": true, "sort": 0, @@ -13030,7 +14058,7 @@ data: }, "yaxes": [ { - "format": "short", + "format": "s", "label": null, "logBase": 1, "max": null, @@ -13061,13 +14089,15 @@ data: "gridPos": { "h": 8, "w": 8, - "x": 16, - "y": 30 + "x": 0, + "y": 23 }, - "id": 49, + "id": 45, "legend": { "avg": false, "current": false, + "hideEmpty": true, + "hideZero": true, "max": false, "min": false, "show": true, @@ -13077,7 +14107,7 @@ data: "lines": true, "linewidth": 1, "links": [], - "nullPointMode": "null", + "nullPointMode": "null as zero", "percentage": false, "pointradius": 5, "points": false, @@ -13088,18 +14118,43 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(sum(pilot_xds_cds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")", + "expr": "pilot_conflict_inbound_listener{job=\"pilot\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Inbound Listeners", + "refId": "B" + }, + { + "expr": "pilot_conflict_outbound_listener_http_over_current_tcp{job=\"pilot\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Outbound Listeners (http over current tcp)", + "refId": "A" + }, + { + "expr": "pilot_conflict_outbound_listener_tcp_over_current_tcp{job=\"pilot\"}", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ node }} ({{ err }})", - "refId": "A" + "legendFormat": "Outbound Listeners (tcp over current tcp)", + "refId": "C" + }, + { + "expr": "pilot_conflict_outbound_listener_tcp_over_current_http{job=\"pilot\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "Outbound Listeners (tcp over current http)", + "refId": "D" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Rejected CDS Configs", + "title": "Conflicts", "tooltip": { "shared": true, "sort": 0, @@ -13128,7 +14183,7 @@ data: "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -13144,12 +14199,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, + "h": 8, "w": 8, - "x": 0, - "y": 38 + "x": 8, + "y": 23 }, - "id": 52, + "id": 47, "legend": { "avg": false, "current": false, @@ -13173,18 +14228,32 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(sum(pilot_xds_eds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")", + "expr": "pilot_virt_services{job=\"pilot\"}", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ node }} ({{err}})", + "legendFormat": "Virtual Services", "refId": "A" + }, + { + "expr": "pilot_services{job=\"pilot\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Services", + "refId": "B" + }, + { + "expr": "pilot_xds{job=\"pilot\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Connected Endpoints", + "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Rejected EDS Configs", + "title": "ADS Monitoring", "tooltip": { "shared": true, "sort": 0, @@ -13221,20 +14290,93 @@ data: "alignLevel": null } }, + { + "columns": [], + "datasource": "Prometheus", + "description": "Clusters in this table do not have any endpoints known to pilot. This could be from referencing subsets that do not have any instances, or pods marked as NotReady", + "fontSize": "100%", + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 23 + }, + "id": 51, + "links": [], + "pageSize": null, + "scroll": true, + "showHeader": true, + "sort": { + "col": null, + "desc": false + }, + "styles": [ + { + "alias": "Time", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "date" + }, + { + "alias": "Clusters", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "pattern": "/.*/", + "thresholds": [], + "type": "number", + "unit": "short" + } + ], + "targets": [ + { + "expr": "sum(pilot_xds_eds_instances{job=\"pilot\", cluster=~\".+\\\\|.+\"}) by (cluster) < 1", + "format": "time_series", + "hide": false, + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{cluster}}", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Clusters with no known endpoints", + "transform": "timeseries_aggregations", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 64, + "panels": [], + "title": "Envoy Information", + "type": "row" + }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "Shows details about Envoy proxies in the mesh", "fill": 1, "gridPos": { - "h": 7, + "h": 8, "w": 8, - "x": 8, - "y": 38 + "x": 0, + "y": 32 }, - "id": 54, + "id": 40, "legend": { "avg": false, "current": false, @@ -13258,18 +14400,34 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(sum(pilot_xds_lds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")", + "expr": "sum(irate(envoy_cluster_upstream_cx_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Connections", + "refId": "C" + }, + { + "expr": "sum(irate(envoy_cluster_upstream_cx_connect_fail{cluster_name=\"xds-grpc\"}[1m]))", "format": "time_series", + "hide": false, "intervalFactor": 1, - "legendFormat": "{{ node }} ({{err}})", + "legendFormat": "XDS Connection Failures", "refId": "A" + }, + { + "expr": "sum(increase(envoy_server_hot_restart_epoch[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "Envoy Restarts", + "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Rejected LDS Configs", + "title": "Envoy Details", "tooltip": { "shared": true, "sort": 0, @@ -13285,7 +14443,7 @@ data: }, "yaxes": [ { - "format": "short", + "format": "ops", "label": null, "logBase": 1, "max": null, @@ -13293,12 +14451,12 @@ data: "show": true }, { - "format": "short", + "format": "ops", "label": null, "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -13314,12 +14472,12 @@ data: "datasource": "Prometheus", "fill": 1, "gridPos": { - "h": 7, + "h": 8, "w": 8, - "x": 16, - "y": 38 + "x": 8, + "y": 32 }, - "id": 53, + "id": 41, "legend": { "avg": false, "current": false, @@ -13343,18 +14501,19 @@ data: "steppedLine": false, "targets": [ { - "expr": "label_replace(sum(pilot_xds_rds_reject{job=\"pilot\"}) by (node, err), \"node\", \"$1\", \"node\", \".*~.*~(.*)~.*\")", + "expr": "sum(envoy_cluster_upstream_cx_active{cluster_name=\"xds-grpc\"})", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ node }} ({{err}})", - "refId": "A" + "intervalFactor": 2, + "legendFormat": "XDS Active Connections", + "refId": "C", + "step": 2 } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Rejected RDS Configs", + "title": "XDS Active Connections", "tooltip": { "shared": true, "sort": 0, @@ -13392,24 +14551,25 @@ data: } }, { - "aliasColors": { - "outbound|80||default-http-backend.kube-system.svc.cluster.local": "rgba(255, 255, 255, 0.97)" - }, + "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", + "description": "Shows the size of XDS requests and responses", "fill": 1, "gridPos": { - "h": 7, + "h": 8, "w": 8, - "x": 0, - "y": 45 + "x": 16, + "y": 32 }, - "id": 51, + "id": 42, "legend": { "avg": false, "current": false, + "hideEmpty": false, + "hideZero": false, "max": false, "min": false, "show": true, @@ -13424,29 +14584,47 @@ data: "pointradius": 5, "points": false, "renderer": "flot", - "seriesOverrides": [ - { - "alias": "outbound|80||default-http-backend.kube-system.svc.cluster.local", - "yaxis": 1 - } - ], + "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { - "expr": "sum(pilot_xds_eds_instances{job=\"pilot\"}) by (cluster)", + "expr": "max(rate(envoy_cluster_upstream_cx_rx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Response Bytes Max", + "refId": "D" + }, + { + "expr": "quantile(0.5, rate(envoy_cluster_upstream_cx_rx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "hide": false, + "intervalFactor": 1, + "legendFormat": "XDS Response Bytes Average", + "refId": "B" + }, + { + "expr": "max(rate(envoy_cluster_upstream_cx_tx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "{{ cluster }}", + "legendFormat": "XDS Request Bytes Max", "refId": "A" + }, + { + "expr": "quantile(.5, rate(envoy_cluster_upstream_cx_tx_bytes_total{cluster_name=\"xds-grpc\"}[1m]))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "XDS Request Bytes Average", + "refId": "C" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "EDS Instances", + "title": "XDS Requests Size", "tooltip": { "shared": true, "sort": 0, @@ -13462,7 +14640,7 @@ data: }, "yaxes": [ { - "format": "short", + "format": "Bps", "label": null, "logBase": 1, "max": null, @@ -13470,12 +14648,12 @@ data: "show": true }, { - "format": "short", + "format": "ops", "label": null, "logBase": 1, "max": null, "min": null, - "show": true + "show": false } ], "yaxis": { @@ -13523,9 +14701,8 @@ data: "timezone": "browser", "title": "Istio Pilot Dashboard", "uid": "3--MLVZZk", - "version": 1 -} -' + "version": 11 +}' --- --- @@ -13582,7 +14759,7 @@ data: config.yaml: | istio_namespace: istio-system auth: - strategy: "login" + strategy: login server: port: 20001 web_root: /kiali @@ -13957,6 +15134,10 @@ data: # Set the following variable to true to disable policy checks by the Mixer. # Note that metrics will still be reported to the Mixer. disablePolicyChecks: true + # reportBatchMaxEntries is the number of requests that are batched before telemetry data is sent to the mixer server + reportBatchMaxEntries: 100 + # reportBatchMaxTime is the max waiting time before the telemetry data of a request is sent to the mixer server + reportBatchMaxTime: 1s # Set enableTracing to false to disable request tracing. enableTracing: true @@ -13973,6 +15154,8 @@ data: # Set accessLogEncoding to JSON or TEXT to configure sidecar access log accessLogEncoding: 'TEXT' + + enableEnvoyAccessLogService: false mixerCheckServer: istio-policy.istio-system.svc.cluster.local:9091 mixerReportServer: istio-telemetry.istio-system.svc.cluster.local:9091 # policyCheckFailOpen allows traffic in cases when the mixer policy service cannot be reached. @@ -13983,46 +15166,40 @@ data: # Default connect timeout for dynamic clusters generated by Pilot and returned via XDS connectTimeout: 10s - + + # Automatic protocol detection uses a set of heuristics to + # determine whether the connection is using TLS or not (on the + # server side), as well as the application protocol being used + # (e.g., http vs tcp). These heuristics rely on the client sending + # the first bits of data. For server first protocols like MySQL, + # MongoDB, etc., Envoy will timeout on the protocol detection after + # the specified period, defaulting to non mTLS plain TCP + # traffic. Set this field to tweak the period that Envoy will wait + # for the client to send the first bits of data. (MUST BE >=1ms) + protocolDetectionTimeout: 100ms + # DNS refresh rate for Envoy clusters of type STRICT_DNS dnsRefreshRate: 300s # Unix Domain Socket through which envoy communicates with NodeAgent SDS to get - # key/cert for mTLS. Use secret-mount files instead of SDS if set to empty. - sdsUdsPath: - - # This flag is used by secret discovery service(SDS). - # If set to true(prerequisite: https://kubernetes.io/docs/concepts/storage/volumes/#projected), Istio will inject volumes mount - # for k8s service account JWT, so that K8s API server mounts k8s service account JWT to envoy container, which - # will be used to generate key/cert eventually. This isn't supported for non-k8s case. - enableSdsTokenMount: false - - # This flag is used by secret discovery service(SDS). - # If set to true, envoy will fetch normal k8s service account JWT from '/var/run/secrets/kubernetes.io/serviceaccount/token' - # (https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod) - # and pass to sds server, which will be used to request key/cert eventually. - # this flag is ignored if enableSdsTokenMount is set. - # This isn't supported for non-k8s case. - sdsUseK8sSaJwt: false + # key/cert for mTLS. Use secret-mount files instead of SDS if set to empty. + sdsUdsPath: "" # The trust domain corresponds to the trust root of a system. # Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain - trustDomain: + trustDomain: "" # Set the default behavior of the sidecar for handling outbound traffic from the application: # ALLOW_ANY - outbound traffic to unknown destinations will be allowed, in case there are no # services or ServiceEntries for the destination port # REGISTRY_ONLY - restrict outbound traffic to services defined in the service registry as well - # as those defined through ServiceEntries + # as those defined through ServiceEntries outboundTrafficPolicy: mode: ALLOW_ANY - localityLbSetting: - {} - - + enabled: true # The namespace to treat as the administrative root namespace for istio - # configuration. + # configuration. rootNamespace: istio-system configSources: - address: istio-galley.istio-system.svc:9901 @@ -14079,7 +15256,7 @@ data: # # Address where istio Pilot service is running discoveryAddress: istio-pilot.istio-system:15010 - + # Configuration file for the mesh networks to be used by the Split Horizon EDS. meshNetworks: |- networks: {} @@ -14100,16 +15277,14 @@ metadata: istio: sidecar-injector data: values: |- - {"certmanager":{"enabled":false},"galley":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"galley","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"tolerations":[]},"gateways":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"istio-egressgateway":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":false,"env":{"ISTIO_META_ROUTER_MODE":"sni-dnat"},"labels":{"app":"istio-egressgateway","istio":"egressgateway"},"nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"ports":[{"name":"http2","port":80},{"name":"https","port":443},{"name":"tls","port":15443,"targetPort":15443}],"resources":{"limits":{"cpu":"2000m","memory":"256Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"secretVolumes":[{"mountPath":"/etc/istio/egressgateway-certs","name":"egressgateway-certs","secretName":"istio-egressgateway-certs"},{"mountPath":"/etc/istio/egressgateway-ca-certs","name":"egressgateway-ca-certs","secretName":"istio-egressgateway-ca-certs"}],"serviceAnnotations":{},"tolerations":[],"type":"ClusterIP"},"istio-ilbgateway":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":false,"labels":{"app":"istio-ilbgateway","istio":"ilbgateway"},"loadBalancerIP":"","nodeSelector":{},"podAnnotations":{},"ports":[{"name":"grpc-pilot-mtls","port":15011},{"name":"grpc-pilot","port":15010},{"name":"tcp-citadel-grpc-tls","port":8060,"targetPort":8060},{"name":"tcp-dns","port":5353}],"resources":{"requests":{"cpu":"800m","memory":"512Mi"}},"secretVolumes":[{"mountPath":"/etc/istio/ilbgateway-certs","name":"ilbgateway-certs","secretName":"istio-ilbgateway-certs"},{"mountPath":"/etc/istio/ilbgateway-ca-certs","name":"ilbgateway-ca-certs","secretName":"istio-ilbgateway-ca-certs"}],"serviceAnnotations":{"cloud.google.com/load-balancer-type":"internal"},"tolerations":[],"type":"LoadBalancer"},"istio-ingressgateway":{"applicationPorts":"","autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"env":{"ISTIO_META_ROUTER_MODE":"sni-dnat"},"externalIPs":[],"labels":{"app":"istio-ingressgateway","istio":"ingressgateway"},"loadBalancerIP":"","loadBalancerSourceRanges":[],"meshExpansionPorts":[{"name":"tcp-pilot-grpc-tls","port":15011,"targetPort":15011},{"name":"tcp-mixer-grpc-tls","port":15004,"targetPort":15004},{"name":"tcp-citadel-grpc-tls","port":8060,"targetPort":8060},{"name":"tcp-dns-tls","port":853,"targetPort":853}],"nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"ports":[{"name":"status-port","port":15020,"targetPort":15020},{"name":"http2","nodePort":31380,"port":80,"targetPort":80},{"name":"https","nodePort":31390,"port":443},{"name":"tcp","nodePort":31400,"port":31400},{"name":"https-kiali","port":15029,"targetPort":15029},{"name":"https-prometheus","port":15030,"targetPort":15030},{"name":"https-grafana","port":15031,"targetPort":15031},{"name":"https-tracing","port":15032,"targetPort":15032},{"name":"tls","port":15443,"targetPort":15443}],"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"sds":{"enabled":false,"image":"node-agent-k8s","resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}},"secretVolumes":[{"mountPath":"/etc/istio/ingressgateway-certs","name":"ingressgateway-certs","secretName":"istio-ingressgateway-certs"},{"mountPath":"/etc/istio/ingressgateway-ca-certs","name":"ingressgateway-ca-certs","secretName":"istio-ingressgateway-ca-certs"}],"serviceAnnotations":{},"tolerations":[],"type":"LoadBalancer"}},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"grafana":{"accessMode":"ReadWriteMany","contextPath":"/grafana","dashboardProviders":{"dashboardproviders.yaml":{"apiVersion":1,"providers":[{"disableDeletion":false,"folder":"istio","name":"istio","options":{"path":"/var/lib/grafana/dashboards/istio"},"orgId":1,"type":"file"}]}},"datasources":{"datasources.yaml":{"apiVersion":1,"datasources":[{"access":"proxy","editable":true,"isDefault":true,"jsonData":{"timeInterval":"5s"},"name":"Prometheus","orgId":1,"type":"prometheus","url":"http://prometheus:9090"}]}},"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":{"repository":"grafana/grafana","tag":"6.1.6"},"ingress":{"enabled":false,"hosts":["grafana.local"]},"nodeSelector":{},"persist":false,"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"security":{"enabled":false,"passphraseKey":"passphrase","secretName":"grafana","usernameKey":"username"},"service":{"annotations":{},"externalPort":3000,"name":"http","type":"ClusterIP"},"storageClassName":"","tolerations":[]},"istio_cni":{"enabled":false},"istiocoredns":{"enabled":false},"kiali":{"contextPath":"/kiali","createDemoSecret":false,"dashboard":{"grafanaURL":"http://grafana:3000","jaegerURL":"http://jaeger-query:16686","secretName":"kiali","viewOnlyMode":false},"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"hub":"quay.io/kiali","ingress":{"enabled":false,"hosts":["kiali.local"]},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"prometheusAddr":"http://prometheus:9090","replicaCount":1,"tag":"v0.20","tolerations":[]},"mixer":{"adapters":{"kubernetesenv":{"enabled":true},"prometheus":{"enabled":true,"metricsExpiryDuration":"10m"},"stdio":{"enabled":false,"outputAsJson":true},"useAdapterCRDs":false},"env":{"GODEBUG":"gctrace=1","GOMAXPROCS":"6"},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"mixer","nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"policy":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"replicaCount":1},"telemetry":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"loadshedding":{"latencyThreshold":"100ms","mode":"enforce"},"replicaCount":1,"resources":{"limits":{"cpu":"4800m","memory":"4G"},"requests":{"cpu":"1000m","memory":"1G"}},"sessionAffinityEnabled":false},"templates":{"useTemplateCRDs":false},"tolerations":[]},"nodeagent":{"enabled":false},"pilot":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"env":{"GODEBUG":"gctrace=1","PILOT_PUSH_THROTTLE":100},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"pilot","keepaliveMaxServerConnectionAge":"30m","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"resources":{"requests":{"cpu":"500m","memory":"2048Mi"}},"sidecar":true,"tolerations":[],"traceSampling":1},"prometheus":{"contextPath":"/prometheus","enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"hub":"docker.io/prom","ingress":{"enabled":false,"hosts":["prometheus.local"]},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"retention":"6h","scrapeInterval":"15s","security":{"enabled":true},"service":{"annotations":{},"nodePort":{"enabled":false,"port":32090}},"tag":"v2.8.0","tolerations":[]},"security":{"citadelHealthCheck":false,"createMeshPolicy":true,"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"citadel","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"selfSigned":true,"tolerations":[],"workloadCertTtl":"2160h"},"sidecarInjectorWebhook":{"alwaysInjectSelector":[],"enableNamespacesByDefault":false,"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"sidecar_injector","neverInjectSelector":[],"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"rewriteAppHTTPProbe":false,"tolerations":[]},"tracing":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":null,"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","kubevirtInterfaces":"","logLevel":"","privileged":false,"readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"udsPath":"","useNormalJwt":false,"useTrustworthyJwt":false},"tag":"1.2.5","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"ingress":{"enabled":false},"jaeger":{"hub":"docker.io/jaegertracing","memory":{"max_traces":50000},"tag":1.9},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"provider":"jaeger","service":{"annotations":{},"externalPort":9411,"name":"http","type":"ClusterIP"},"tolerations":[],"zipkin":{"hub":"docker.io/openzipkin","javaOptsHeap":700,"maxSpans":500000,"node":{"cpus":2},"probeStartupDelay":200,"queryPort":9411,"resources":{"limits":{"cpu":"300m","memory":"900Mi"},"requests":{"cpu":"150m","memory":"900Mi"}},"tag":2}}} + {"certmanager":{"enabled":false},"galley":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"galley","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","tolerations":[]},"gateways":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"istio-egressgateway":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":false,"env":{"ISTIO_META_ROUTER_MODE":"sni-dnat"},"labels":{"app":"istio-egressgateway","istio":"egressgateway"},"nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"ports":[{"name":"http2","port":80},{"name":"https","port":443},{"name":"tls","port":15443,"targetPort":15443}],"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","secretVolumes":[{"mountPath":"/etc/istio/egressgateway-certs","name":"egressgateway-certs","secretName":"istio-egressgateway-certs"},{"mountPath":"/etc/istio/egressgateway-ca-certs","name":"egressgateway-ca-certs","secretName":"istio-egressgateway-ca-certs"}],"serviceAnnotations":{},"tolerations":[],"type":"ClusterIP"},"istio-ilbgateway":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":false,"labels":{"app":"istio-ilbgateway","istio":"ilbgateway"},"loadBalancerIP":"","nodeSelector":{},"podAnnotations":{},"ports":[{"name":"grpc-pilot-mtls","port":15011},{"name":"grpc-pilot","port":15010},{"name":"tcp-citadel-grpc-tls","port":8060,"targetPort":8060},{"name":"tcp-dns","port":5353}],"resources":{"requests":{"cpu":"800m","memory":"512Mi"}},"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","secretVolumes":[{"mountPath":"/etc/istio/ilbgateway-certs","name":"ilbgateway-certs","secretName":"istio-ilbgateway-certs"},{"mountPath":"/etc/istio/ilbgateway-ca-certs","name":"ilbgateway-ca-certs","secretName":"istio-ilbgateway-ca-certs"}],"serviceAnnotations":{"cloud.google.com/load-balancer-type":"internal"},"tolerations":[],"type":"LoadBalancer"},"istio-ingressgateway":{"applicationPorts":"","autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"env":{"ISTIO_META_ROUTER_MODE":"sni-dnat"},"externalIPs":[],"labels":{"app":"istio-ingressgateway","istio":"ingressgateway"},"loadBalancerIP":"","loadBalancerSourceRanges":[],"meshExpansionPorts":[{"name":"tcp-pilot-grpc-tls","port":15011,"targetPort":15011},{"name":"tcp-mixer-grpc-tls","port":15004,"targetPort":15004},{"name":"tcp-citadel-grpc-tls","port":8060,"targetPort":8060},{"name":"tcp-dns-tls","port":853,"targetPort":853}],"nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"ports":[{"name":"status-port","port":15020,"targetPort":15020},{"name":"http2","nodePort":31380,"port":80,"targetPort":80},{"name":"https","nodePort":31390,"port":443},{"name":"tcp","nodePort":31400,"port":31400},{"name":"https-kiali","port":15029,"targetPort":15029},{"name":"https-prometheus","port":15030,"targetPort":15030},{"name":"https-grafana","port":15031,"targetPort":15031},{"name":"https-tracing","port":15032,"targetPort":15032},{"name":"tls","port":15443,"targetPort":15443}],"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","sds":{"enabled":false,"image":"node-agent-k8s","resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}}},"secretVolumes":[{"mountPath":"/etc/istio/ingressgateway-certs","name":"ingressgateway-certs","secretName":"istio-ingressgateway-certs"},{"mountPath":"/etc/istio/ingressgateway-ca-certs","name":"ingressgateway-ca-certs","secretName":"istio-ingressgateway-ca-certs"}],"serviceAnnotations":{},"tolerations":[],"type":"LoadBalancer"}},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"grafana":{"accessMode":"ReadWriteMany","contextPath":"/grafana","dashboardProviders":{"dashboardproviders.yaml":{"apiVersion":1,"providers":[{"disableDeletion":false,"folder":"istio","name":"istio","options":{"path":"/var/lib/grafana/dashboards/istio"},"orgId":1,"type":"file"}]}},"datasources":{"datasources.yaml":{"apiVersion":1,"datasources":[{"access":"proxy","editable":true,"isDefault":true,"jsonData":{"timeInterval":"5s"},"name":"Prometheus","orgId":1,"type":"prometheus","url":"http://prometheus:9090"}]}},"enabled":true,"env":{},"envSecrets":{},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":{"repository":"grafana/grafana","tag":"6.1.6"},"ingress":{"enabled":false,"hosts":["grafana.local"]},"nodeSelector":{},"persist":false,"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"security":{"enabled":false,"passphraseKey":"passphrase","secretName":"grafana","usernameKey":"username"},"service":{"annotations":{},"externalPort":3000,"name":"http","type":"ClusterIP"},"storageClassName":"","tolerations":[]},"istio_cni":{"enabled":false},"istiocoredns":{"enabled":false},"kiali":{"contextPath":"/kiali","createDemoSecret":false,"dashboard":{"auth":{"strategy":"login"},"grafanaURL":"http://grafana:3000","jaegerURL":"http://jaeger-query:16686","secretName":"kiali","viewOnlyMode":false},"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"hub":"quay.io/kiali","image":"kiali","ingress":{"enabled":false,"hosts":["kiali.local"]},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"prometheusAddr":"http://prometheus:9090","replicaCount":1,"security":{"cert_file":"/kiali-cert/cert-chain.pem","enabled":false,"private_key_file":"/kiali-cert/key.pem"},"tag":"v1.4","tolerations":[]},"mixer":{"adapters":{"kubernetesenv":{"enabled":true},"prometheus":{"enabled":true,"metricsExpiryDuration":"10m"},"stdio":{"enabled":false,"outputAsJson":true},"useAdapterCRDs":false},"env":{"GODEBUG":"gctrace=1","GOMAXPROCS":"6"},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"mixer","nodeSelector":{},"podAnnotations":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"policy":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"replicaCount":1,"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%"},"telemetry":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enabled":true,"loadshedding":{"latencyThreshold":"100ms","mode":"enforce"},"replicaCount":1,"reportBatchMaxEntries":100,"reportBatchMaxTime":"1s","resources":{"limits":{"cpu":"4800m","memory":"4G"},"requests":{"cpu":"1000m","memory":"1G"}},"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","sessionAffinityEnabled":false},"tolerations":[]},"nodeagent":{"enabled":false},"pilot":{"autoscaleEnabled":true,"autoscaleMax":5,"autoscaleMin":1,"cpu":{"targetAverageUtilization":80},"enableProtocolSniffingForInbound":false,"enableProtocolSniffingForOutbound":true,"enabled":true,"env":{"GODEBUG":"gctrace=1","PILOT_PUSH_THROTTLE":100},"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"pilot","keepaliveMaxServerConnectionAge":"30m","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"resources":{"requests":{"cpu":"500m","memory":"2048Mi"}},"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","sidecar":true,"tolerations":[],"traceSampling":1},"prometheus":{"contextPath":"/prometheus","enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"hub":"docker.io/prom","image":"prometheus","ingress":{"enabled":false,"hosts":["prometheus.local"]},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"retention":"6h","scrapeInterval":"15s","security":{"enabled":true},"service":{"annotations":{},"nodePort":{"enabled":false,"port":32090}},"tag":"v2.8.0","tolerations":[]},"security":{"citadelHealthCheck":false,"createMeshPolicy":true,"enableNamespacesByDefault":true,"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"citadel","nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","selfSigned":true,"tolerations":[],"workloadCertTtl":"2160h"},"sidecarInjectorWebhook":{"alwaysInjectSelector":[],"enableNamespacesByDefault":false,"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"image":"sidecar_injector","neverInjectSelector":[],"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"replicaCount":1,"rewriteAppHTTPProbe":false,"rollingMaxSurge":"100%","rollingMaxUnavailable":"25%","tolerations":[]},"tracing":{"enabled":true,"global":{"arch":{"amd64":2,"ppc64le":2,"s390x":2},"configValidation":true,"controlPlaneSecurityEnabled":false,"defaultNodeSelector":{},"defaultPodDisruptionBudget":{"enabled":true},"defaultResources":{"requests":{"cpu":"10m"}},"defaultTolerations":[],"disablePolicyChecks":true,"enableHelmTest":false,"enableTracing":true,"hub":"docker.io/istio","imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"k8sIngress":{"enableHttps":false,"enabled":false,"gatewayName":"ingressgateway"},"localityLbSetting":{"enabled":true},"logging":{"level":"default:info"},"meshExpansion":{"enabled":false,"useILB":false},"meshID":"","meshNetworks":{},"monitoringPort":15014,"mtls":{"enabled":false},"multiCluster":{"clusterName":"","enabled":false},"oneNamespace":false,"outboundTrafficPolicy":{"mode":"ALLOW_ANY"},"policyCheckFailOpen":false,"priorityClassName":"","proxy":{"accessLogEncoding":"TEXT","accessLogFile":"","accessLogFormat":"","autoInject":"enabled","clusterDomain":"cluster.local","componentLogLevel":"","concurrency":2,"dnsRefreshRate":"300s","enableCoreDump":false,"enableCoreDumpImage":"ubuntu:xenial","envoyAccessLogService":{"enabled":false,"tcpKeepalive":{"interval":"10s","probes":3,"time":"10s"},"tlsSettings":{"mode":"DISABLE","subjectAltNames":[]}},"envoyMetricsService":{"enabled":false},"envoyStatsd":{"enabled":false},"excludeIPRanges":"","excludeInboundPorts":"","excludeOutboundPorts":"","image":"proxyv2","includeIPRanges":"*","includeInboundPorts":"*","init":{"resources":{"limits":{"cpu":"100m","memory":"50Mi"},"requests":{"cpu":"10m","memory":"10Mi"}}},"kubevirtInterfaces":"","logLevel":"","privileged":false,"protocolDetectionTimeout":"100ms","readinessFailureThreshold":30,"readinessInitialDelaySeconds":1,"readinessPeriodSeconds":2,"resources":{"limits":{"cpu":"2000m","memory":"1024Mi"},"requests":{"cpu":"100m","memory":"128Mi"}},"statusPort":15020,"tracer":"zipkin"},"proxy_init":{"image":"proxy_init"},"sds":{"enabled":false,"token":{"aud":"istio-ca"},"udsPath":""},"tag":"1.3.0","tracer":{"datadog":{"address":"$(HOST_IP):8126"},"lightstep":{"accessToken":"","address":"","cacertPath":"","secure":true},"zipkin":{"address":""}},"trustDomain":"","useMCP":true},"ingress":{"enabled":false},"jaeger":{"accessMode":"ReadWriteMany","hub":"docker.io/jaegertracing","image":"all-in-one","memory":{"max_traces":50000},"persist":false,"spanStorageType":"badger","storageClassName":"","tag":1.12},"nodeSelector":{},"podAntiAffinityLabelSelector":[],"podAntiAffinityTermLabelSelector":[],"provider":"jaeger","service":{"annotations":{},"externalPort":9411,"name":"http","type":"ClusterIP"},"tolerations":[],"zipkin":{"hub":"docker.io/openzipkin","image":"zipkin","javaOptsHeap":700,"maxSpans":500000,"node":{"cpus":2},"probeStartupDelay":200,"queryPort":9411,"resources":{"limits":{"cpu":"300m","memory":"900Mi"},"requests":{"cpu":"150m","memory":"900Mi"}},"tag":"2.14.2"}}} config: |- policy: enabled alwaysInjectSelector: [] - neverInjectSelector: [] - template: |- rewriteAppHTTPProbe: {{ valueOrDefault .Values.sidecarInjectorWebhook.rewriteAppHTTPProbe false }} {{- if or (not .Values.istio_cni.enabled) .Values.global.proxy.enableCoreDump }} @@ -14125,6 +15300,8 @@ data: args: - "-p" - "15001" + - "-z" + - "15006" - "-u" - 1337 - "-m" @@ -14134,7 +15311,7 @@ data: - "-x" - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/excludeOutboundIPRanges` .Values.global.proxy.excludeIPRanges }}" - "-b" - - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` (includeInboundPorts .Spec.Containers) }}" + - "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` `*` }}" - "-d" - "{{ excludeInboundPort (annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort) (annotation .ObjectMeta `traffic.sidecar.istio.io/excludeInboundPorts` .Values.global.proxy.excludeInboundPorts) }}" {{ if or (isset .ObjectMeta.Annotations `traffic.sidecar.istio.io/excludeOutboundPorts`) (ne .Values.global.proxy.excludeOutboundPorts "") -}} @@ -14146,13 +15323,12 @@ data: - "{{ index .ObjectMeta.Annotations `traffic.sidecar.istio.io/kubevirtInterfaces` }}" {{ end -}} imagePullPolicy: "{{ .Values.global.imagePullPolicy }}" + {{- if .Values.global.proxy.init.resources }} resources: - requests: - cpu: 10m - memory: 10Mi - limits: - cpu: 100m - memory: 50Mi + {{ toYaml .Values.global.proxy.init.resources | indent 4 }} + {{- else }} + resources: {} + {{- end }} securityContext: runAsUser: 0 runAsNonRoot: false @@ -14163,11 +15339,6 @@ data: privileged: true {{- end }} restartPolicy: Always - env: - {{- if contains "*" (annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` "") }} - - name: INBOUND_CAPTURE_PORT - value: 15006 - {{- end }} {{- end }} {{ end -}} {{- if eq .Values.global.proxy.enableCoreDump true }} @@ -14177,11 +15348,7 @@ data: - sysctl -w kernel.core_pattern=/var/lib/istio/core.proxy && ulimit -c unlimited command: - /bin/sh - {{- if contains "/" .Values.global.proxy_init.image }} - image: "{{ .Values.global.proxy_init.image }}" - {{- else }} - image: "{{ .Values.global.hub }}/{{ .Values.global.proxy_init.image }}:{{ .Values.global.tag }}" - {{- end }} + image: {{ $.Values.global.proxy.enableCoreDumpImage }} imagePullPolicy: IfNotPresent resources: {} securityContext: @@ -14192,7 +15359,7 @@ data: {{- end }} containers: - name: istio-proxy - {{- if contains "/" .Values.global.proxy.image }} + {{- if contains "/" (annotation .ObjectMeta `sidecar.istio.io/proxyImage` .Values.global.proxy.image) }} image: "{{ annotation .ObjectMeta `sidecar.istio.io/proxyImage` .Values.global.proxy.image }}" {{- else }} image: "{{ annotation .ObjectMeta `sidecar.istio.io/proxyImage` .Values.global.hub }}/{{ .Values.global.proxy.image }}:{{ .Values.global.tag }}" @@ -14253,7 +15420,11 @@ data: {{- end }} {{- if .Values.global.proxy.envoyMetricsService.enabled }} - --envoyMetricsServiceAddress - - "{{ .ProxyConfig.EnvoyMetricsServiceAddress }}" + - "{{ .ProxyConfig.GetEnvoyMetricsService.GetAddress }}" + {{- end }} + {{- if .Values.global.proxy.envoyAccessLogService.enabled }} + - --envoyAccessLogService + - '{{ structToJSON .ProxyConfig.EnvoyAccessLogService }}' {{- end }} - --proxyAdminPort - "{{ .ProxyConfig.ProxyAdminPort }}" @@ -14277,6 +15448,17 @@ data: valueFrom: fieldRef: fieldPath: metadata.name + - name: ISTIO_META_POD_PORTS + value: |- + [ + {{- range $index1, $c := .Spec.Containers }} + {{- range $index2, $p := $c.Ports }} + {{if or (ne $index1 0) (ne $index2 0)}},{{end}}{{ structToJSON $p }} + {{- end}} + {{- end}} + ] + - name: ISTIO_META_CLUSTER_ID + value: "{{ valueOrDefault .Values.global.multicluster.clusterName `Kubernetes` }}" - name: POD_NAMESPACE valueFrom: fieldRef: @@ -14285,6 +15467,10 @@ data: valueFrom: fieldRef: fieldPath: status.podIP + - name: SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName {{ if eq .Values.global.proxy.tracer "datadog" }} - name: HOST_IP valueFrom: @@ -14299,6 +15485,8 @@ data: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: SDS_ENABLED + value: {{ $.Values.global.sds.enabled }} - name: ISTIO_META_INTERCEPTION_MODE value: "{{ or (index .ObjectMeta.Annotations `sidecar.istio.io/interceptionMode`) .ProxyConfig.InterceptionMode.String }}" - name: ISTIO_META_INCLUDE_INBOUND_PORTS @@ -14317,6 +15505,14 @@ data: value: | {{ toJSON .ObjectMeta.Labels }} {{ end }} + {{- if .DeploymentMeta.Name }} + - name: ISTIO_META_WORKLOAD_NAME + value: {{ .DeploymentMeta.Name }} + {{ end }} + {{- if and .TypeMeta.APIVersion .DeploymentMeta.Name }} + - name: ISTIO_META_OWNER + value: kubernetes://api/{{ .TypeMeta.APIVersion }}/namespaces/{{ valueOrDefault .DeploymentMeta.Namespace `default` }}/{{ toLower .TypeMeta.Kind}}s/{{ .DeploymentMeta.Name }} + {{- end}} {{- if (isset .ObjectMeta.Annotations `sidecar.istio.io/bootstrapOverride`) }} - name: ISTIO_BOOTSTRAP_OVERRIDE value: "/etc/istio/custom-bootstrap/custom_bootstrap.json" @@ -14325,6 +15521,13 @@ data: - name: ISTIO_META_SDS_TOKEN_PATH value: "{{ .Values.global.sds.customTokenDirectory -}}/sdstoken" {{- end }} + {{- if .Values.global.meshID }} + - name: ISTIO_META_MESH_ID + value: "{{ .Values.global.meshID }}" + {{- else if .Values.global.trustDomain }} + - name: ISTIO_META_MESH_ID + value: "{{ .Values.global.trustDomain }}" + {{- end }} imagePullPolicy: {{ .Values.global.imagePullPolicy }} {{ if ne (annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort) `0` }} readinessProbe: @@ -14348,7 +15551,7 @@ data: - NET_ADMIN runAsGroup: 1337 {{ else -}} - {{ if and .Values.global.sds.enabled .Values.global.sds.useTrustworthyJwt }} + {{ if .Values.global.sds.enabled }} runAsGroup: 1337 {{- end }} runAsUser: 1337 @@ -14378,10 +15581,8 @@ data: - mountPath: /var/run/sds name: sds-uds-path readOnly: true - {{- if .Values.global.sds.useTrustworthyJwt }} - mountPath: /var/run/secrets/tokens name: istio-token - {{- end }} {{- if .Values.global.sds.customTokenDirectory }} - mountPath: "{{ .Values.global.sds.customTokenDirectory -}}" name: custom-sds-token @@ -14416,20 +15617,18 @@ data: - name: sds-uds-path hostPath: path: /var/run/sds + - name: istio-token + projected: + sources: + - serviceAccountToken: + path: istio-token + expirationSeconds: 43200 + audience: {{ .Values.global.sds.token.aud }} {{- if .Values.global.sds.customTokenDirectory }} - name: custom-sds-token secret: secretName: sdstokensecret {{- end }} - {{- if .Values.global.sds.useTrustworthyJwt }} - - name: istio-token - projected: - sources: - - serviceAccountToken: - path: istio-token - expirationSeconds: 43200 - audience: {{ .Values.global.trustDomain }} - {{- end }} {{- else }} - name: istio-certs secret: @@ -14459,6 +15658,16 @@ data: - {{ render . }} {{- end }} {{- end }} + podRedirectAnnot: + sidecar.istio.io/interceptionMode: "{{ annotation .ObjectMeta `sidecar.istio.io/interceptionMode` .ProxyConfig.InterceptionMode }}" + traffic.sidecar.istio.io/includeOutboundIPRanges: "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeOutboundIPRanges` .Values.global.proxy.includeIPRanges }}" + traffic.sidecar.istio.io/excludeOutboundIPRanges: "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/excludeOutboundIPRanges` .Values.global.proxy.excludeIPRanges }}" + traffic.sidecar.istio.io/includeInboundPorts: "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/includeInboundPorts` (includeInboundPorts .Spec.Containers) }}" + traffic.sidecar.istio.io/excludeInboundPorts: "{{ excludeInboundPort (annotation .ObjectMeta `status.sidecar.istio.io/port` .Values.global.proxy.statusPort) (annotation .ObjectMeta `traffic.sidecar.istio.io/excludeInboundPorts` .Values.global.proxy.excludeInboundPorts) }}" + {{ if or (isset .ObjectMeta.Annotations `traffic.sidecar.istio.io/excludeOutboundPorts`) (ne .Values.global.proxy.excludeOutboundPorts "") }} + traffic.sidecar.istio.io/excludeOutboundPorts: "{{ annotation .ObjectMeta `traffic.sidecar.istio.io/excludeOutboundPorts` .Values.global.proxy.excludeOutboundPorts }}" + {{- end }} + traffic.sidecar.istio.io/kubevirtInterfaces: "{{ index .ObjectMeta.Annotations `traffic.sidecar.istio.io/kubevirtInterfaces` }}" --- # Source: istio/charts/galley/templates/serviceaccount.yaml @@ -14537,7 +15746,7 @@ subjects: apiVersion: batch/v1 kind: Job metadata: - name: istio-grafana-post-install-1.2.5 + name: istio-grafana-post-install-1.3.0 namespace: istio-system annotations: "helm.sh/hook": post-install @@ -14560,7 +15769,7 @@ spec: serviceAccountName: istio-grafana-post-install-account containers: - name: kubectl - image: "docker.io/istio/kubectl:1.2.5" + image: "docker.io/istio/kubectl:1.3.0" command: [ "/bin/bash", "/tmp/grafana/run.sh", "/tmp/grafana/custom-resources.yaml" ] volumeMounts: - mountPath: "/tmp/grafana" @@ -14578,9 +15787,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -14588,21 +15797,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/kiali/templates/serviceaccount.yaml @@ -14726,7 +15935,7 @@ subjects: apiVersion: batch/v1 kind: Job metadata: - name: istio-cleanup-secrets-1.2.5 + name: istio-cleanup-secrets-1.3.0 namespace: istio-system annotations: "helm.sh/hook": post-delete @@ -14750,7 +15959,7 @@ spec: serviceAccountName: istio-cleanup-secrets-service-account containers: - name: kubectl - image: "docker.io/istio/kubectl:1.2.5" + image: "docker.io/istio/kubectl:1.3.0" imagePullPolicy: IfNotPresent command: - /bin/bash @@ -14770,9 +15979,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -14780,21 +15989,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/security/templates/create-custom-resources-job.yaml @@ -14854,7 +16063,7 @@ subjects: apiVersion: batch/v1 kind: Job metadata: - name: istio-security-post-install-1.2.5 + name: istio-security-post-install-1.3.0 namespace: istio-system annotations: "helm.sh/hook": post-install @@ -14877,7 +16086,7 @@ spec: serviceAccountName: istio-security-post-install-account containers: - name: kubectl - image: "docker.io/istio/kubectl:1.2.5" + image: "docker.io/istio/kubectl:1.3.0" imagePullPolicy: IfNotPresent command: [ "/bin/bash", "/tmp/security/run.sh", "/tmp/security/custom-resources.yaml" ] volumeMounts: @@ -14896,9 +16105,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -14906,21 +16115,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/security/templates/serviceaccount.yaml @@ -14989,7 +16198,7 @@ rules: resourceNames: ["istio-galley"] verbs: ["get"] - apiGroups: [""] - resources: ["pods", "nodes", "services", "endpoints"] + resources: ["pods", "nodes", "services", "endpoints", "namespaces"] verbs: ["get", "list", "watch"] - apiGroups: ["extensions"] resources: ["ingresses"] @@ -14998,6 +16207,9 @@ rules: resources: ["deployments/finalizers"] resourceNames: ["istio-galley"] verbs: ["update"] +- apiGroups: ["apiextensions.k8s.io"] + resources: ["customresourcedefinitions"] + verbs: ["get", "list", "watch"] --- # Source: istio/charts/kiali/templates/clusterrole.yaml @@ -15101,6 +16313,7 @@ rules: - destinationrules - gateways - serviceentries + - sidecars - virtualservices verbs: - create @@ -15237,6 +16450,7 @@ rules: - destinationrules - gateways - serviceentries + - sidecars - virtualservices verbs: - get @@ -15376,7 +16590,7 @@ rules: resources: ["secrets"] verbs: ["create", "get", "watch", "list", "update", "delete"] - apiGroups: [""] - resources: ["serviceaccounts", "services"] + resources: ["serviceaccounts", "services", "namespaces"] verbs: ["get", "watch", "list"] - apiGroups: ["authentication.k8s.io"] resources: ["tokenreviews"] @@ -15438,6 +16652,7 @@ subjects: --- # Source: istio/charts/kiali/templates/clusterrolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: @@ -15565,7 +16780,7 @@ kind: ClusterRoleBinding metadata: name: istio-multi labels: - chart: istio-1.2.5 + chart: istio-1.3.0 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole @@ -15881,6 +17096,9 @@ metadata: spec: ports: - port: 443 + name: https-inject + - port: 15014 + name: http-monitoring selector: istio: sidecar-injector @@ -15904,8 +17122,8 @@ spec: istio: galley strategy: rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + maxSurge: 100% + maxUnavailable: 25% template: metadata: labels: @@ -15920,7 +17138,7 @@ spec: serviceAccountName: istio-galley-service-account containers: - name: galley - image: "docker.io/istio/galley:1.2.5" + image: "docker.io/istio/galley:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 443 @@ -15990,9 +17208,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16000,21 +17218,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/gateways/templates/deployment.yaml @@ -16035,6 +17253,10 @@ spec: matchLabels: app: istio-ingressgateway istio: ingressgateway + strategy: + rollingUpdate: + maxSurge: 100% + maxUnavailable: 25% template: metadata: labels: @@ -16049,7 +17271,7 @@ spec: serviceAccountName: istio-ingressgateway-service-account containers: - name: istio-proxy - image: "docker.io/istio/proxyv2:1.2.5" + image: "docker.io/istio/proxyv2:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 15020 @@ -16132,6 +17354,10 @@ spec: fieldRef: apiVersion: v1 fieldPath: status.hostIP + - name: SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName - name: ISTIO_META_POD_NAME valueFrom: fieldRef: @@ -16141,6 +17367,12 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: SDS_ENABLED + value: "false" + - name: ISTIO_META_WORKLOAD_NAME + value: istio-ingressgateway + - name: ISTIO_META_OWNER + value: kubernetes://api/apps/v1/namespaces/istio-system/deployments/istio-ingressgateway - name: ISTIO_META_ROUTER_MODE value: sni-dnat volumeMounts: @@ -16174,9 +17406,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16184,21 +17416,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- --- @@ -16240,7 +17472,7 @@ spec: - containerPort: 3000 readinessProbe: httpGet: - path: /login + path: /api/health port: 3000 env: - name: GRAFANA_PORT @@ -16260,6 +17492,10 @@ spec: volumeMounts: - name: data mountPath: /data/grafana + - name: dashboards-istio-citadel-dashboard + mountPath: "/var/lib/grafana/dashboards/istio/citadel-dashboard.json" + subPath: citadel-dashboard.json + readOnly: true - name: dashboards-istio-galley-dashboard mountPath: "/var/lib/grafana/dashboards/istio/galley-dashboard.json" subPath: galley-dashboard.json @@ -16302,9 +17538,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16312,27 +17548,30 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" volumes: - name: config configMap: name: istio-grafana - name: data emptyDir: {} + - name: dashboards-istio-citadel-dashboard + configMap: + name: istio-grafana-configuration-dashboards-citadel-dashboard - name: dashboards-istio-galley-dashboard configMap: name: istio-grafana-configuration-dashboards-galley-dashboard @@ -16385,10 +17624,11 @@ spec: scheduler.alpha.kubernetes.io/critical-pod: "" prometheus.io/scrape: "true" prometheus.io/port: "9090" + kiali.io/runtimes: go,kiali spec: serviceAccountName: kiali-service-account containers: - - image: "quay.io/kiali/kiali:v0.20" + - image: "quay.io/kiali/kiali:v1.4" imagePullPolicy: IfNotPresent name: kiali command: @@ -16396,7 +17636,21 @@ spec: - "-config" - "/kiali-configuration/config.yaml" - "-v" - - "4" + - "3" + readinessProbe: + httpGet: + path: /kiali/healthz + port: 20001 + scheme: 'HTTP' + initialDelaySeconds: 5 + periodSeconds: 30 + livenessProbe: + httpGet: + path: /kiali/healthz + port: 20001 + scheme: 'HTTP' + initialDelaySeconds: 5 + periodSeconds: 30 env: - name: ACTIVE_NAMESPACE valueFrom: @@ -16405,6 +17659,8 @@ spec: volumeMounts: - name: kiali-configuration mountPath: "/kiali-configuration" + - name: kiali-cert + mountPath: "/kiali-cert" - name: kiali-secret mountPath: "/kiali-secret" resources: @@ -16415,6 +17671,10 @@ spec: - name: kiali-configuration configMap: name: kiali + - name: kiali-cert + secret: + secretName: istio.kiali-service-account + optional: true - name: kiali-secret secret: secretName: kiali @@ -16427,9 +17687,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16437,21 +17697,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/mixer/templates/deployment.yaml @@ -16470,8 +17730,8 @@ metadata: spec: strategy: rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + maxSurge: 100% + maxUnavailable: 25% selector: matchLabels: istio: mixer @@ -16508,9 +17768,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16518,24 +17778,24 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" containers: - name: mixer - image: "docker.io/istio/mixer:1.2.5" + image: "docker.io/istio/mixer:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 15014 @@ -16572,7 +17832,7 @@ spec: initialDelaySeconds: 5 periodSeconds: 5 - name: istio-proxy - image: "docker.io/istio/proxyv2:1.2.5" + image: "docker.io/istio/proxyv2:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 9091 @@ -16606,6 +17866,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: status.podIP + - name: SDS_ENABLED + value: "false" resources: limits: cpu: 2000m @@ -16639,8 +17901,8 @@ metadata: spec: strategy: rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + maxSurge: 100% + maxUnavailable: 25% selector: matchLabels: istio: mixer @@ -16677,9 +17939,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16687,24 +17949,24 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" containers: - name: mixer - image: "docker.io/istio/mixer:1.2.5" + image: "docker.io/istio/mixer:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 15014 @@ -16717,7 +17979,6 @@ spec: - --configStoreURL=mcp://istio-galley.istio-system.svc:9901 - --configDefaultNamespace=istio-system - --useAdapterCRDs=false - - --useTemplateCRDs=false - --trace_zipkin_url=http://zipkin.istio-system:9411/api/v1/spans - --averageLatencyThreshold - 100ms @@ -16752,7 +18013,7 @@ spec: initialDelaySeconds: 5 periodSeconds: 5 - name: istio-proxy - image: "docker.io/istio/proxyv2:1.2.5" + image: "docker.io/istio/proxyv2:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 9091 @@ -16786,6 +18047,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: status.podIP + - name: SDS_ENABLED + value: "false" resources: limits: cpu: 2000m @@ -16822,8 +18085,8 @@ metadata: spec: strategy: rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + maxSurge: 100% + maxUnavailable: 25% selector: matchLabels: istio: pilot @@ -16841,7 +18104,7 @@ spec: serviceAccountName: istio-pilot-service-account containers: - name: discovery - image: "docker.io/istio/pilot:1.2.5" + image: "docker.io/istio/pilot:1.3.0" imagePullPolicy: IfNotPresent args: - "discovery" @@ -16880,8 +18143,10 @@ spec: value: "100" - name: PILOT_TRACE_SAMPLING value: "1" - - name: PILOT_DISABLE_XDS_MARSHALING_TO_ANY - value: "1" + - name: PILOT_ENABLE_PROTOCOL_SNIFFING_FOR_OUTBOUND + value: "true" + - name: PILOT_ENABLE_PROTOCOL_SNIFFING_FOR_INBOUND + value: "false" resources: requests: cpu: 500m @@ -16894,7 +18159,7 @@ spec: mountPath: /etc/certs readOnly: true - name: istio-proxy - image: "docker.io/istio/proxyv2:1.2.5" + image: "docker.io/istio/proxyv2:1.3.0" imagePullPolicy: IfNotPresent ports: - containerPort: 15003 @@ -16927,6 +18192,8 @@ spec: fieldRef: apiVersion: v1 fieldPath: status.podIP + - name: SDS_ENABLED + value: "false" resources: limits: cpu: 2000m @@ -16955,9 +18222,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -16965,21 +18232,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/prometheus/templates/deployment.yaml @@ -17053,9 +18320,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -17063,21 +18330,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/security/templates/deployment.yaml @@ -17100,8 +18367,8 @@ spec: istio: citadel strategy: rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + maxSurge: 100% + maxUnavailable: 25% template: metadata: labels: @@ -17116,7 +18383,7 @@ spec: serviceAccountName: istio-citadel-service-account containers: - name: citadel - image: "docker.io/istio/citadel:1.2.5" + image: "docker.io/istio/citadel:1.3.0" imagePullPolicy: IfNotPresent args: - --append-dns-names=true @@ -17126,6 +18393,9 @@ spec: - --monitoring-port=15014 - --self-signed-ca=true - --workload-cert-ttl=2160h + env: + - name: CITADEL_ENABLE_NAMESPACES_BY_DEFAULT + value: "true" resources: requests: cpu: 10m @@ -17138,9 +18408,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -17148,21 +18418,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/sidecarInjectorWebhook/templates/deployment.yaml @@ -17184,8 +18454,8 @@ spec: istio: sidecar-injector strategy: rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + maxSurge: 100% + maxUnavailable: 25% template: metadata: labels: @@ -17200,7 +18470,7 @@ spec: serviceAccountName: istio-sidecar-injector-service-account containers: - name: sidecar-injector-webhook - image: "docker.io/istio/sidecar_injector:1.2.5" + image: "docker.io/istio/sidecar_injector:1.3.0" imagePullPolicy: IfNotPresent args: - --caCertFile=/etc/istio/certs/root-cert.pem @@ -17265,9 +18535,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -17275,21 +18545,21 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" --- # Source: istio/charts/tracing/templates/deployment-jaeger.yaml @@ -17324,7 +18594,7 @@ spec: spec: containers: - name: jaeger - image: "docker.io/jaegertracing/all-in-one:1.9" + image: "docker.io/jaegertracing/all-in-one:1.12" imagePullPolicy: IfNotPresent ports: - containerPort: 9411 @@ -17341,6 +18611,14 @@ spec: fieldRef: apiVersion: v1 fieldPath: metadata.namespace + - name: BADGER_EPHEMERAL + value: "false" + - name: SPAN_STORAGE_TYPE + value: "badger" + - name: BADGER_DIRECTORY_VALUE + value: "/badger/data" + - name: BADGER_DIRECTORY_KEY + value: "/badger/key" - name: COLLECTOR_ZIPKIN_HTTP_PORT value: "9411" - name: MEMORY_MAX_TRACES @@ -17355,6 +18633,9 @@ spec: httpGet: path: / port: 16686 + volumeMounts: + - name: data + mountPath: /badger resources: requests: cpu: 10m @@ -17367,9 +18648,9 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 - - ppc64le - - s390x + - "amd64" + - "ppc64le" + - "s390x" preferredDuringSchedulingIgnoredDuringExecution: - weight: 2 preference: @@ -17377,21 +18658,24 @@ spec: - key: beta.kubernetes.io/arch operator: In values: - - amd64 + - "amd64" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - ppc64le + - "ppc64le" - weight: 2 preference: matchExpressions: - key: beta.kubernetes.io/arch operator: In values: - - s390x + - "s390x" + volumes: + - name: data + emptyDir: {} --- @@ -17742,6 +19026,10 @@ webhooks: --- # Source: istio/charts/tracing/templates/ingress.yaml +--- +# Source: istio/charts/tracing/templates/pvc.yaml + + --- # Source: istio/charts/tracing/templates/tests/test-tracing-connection.yaml @@ -17900,6 +19188,8 @@ spec: valueType: BOOL quota.cache_hit: valueType: BOOL + context.proxy_version: + valueType: STRING --- apiVersion: "config.istio.io/v1alpha2" diff --git a/src/k8s/auditlogservice.yaml b/src/k8s/auditlogservice.yaml index 56283374..04ce166d 100644 --- a/src/k8s/auditlogservice.yaml +++ b/src/k8s/auditlogservice.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: auditlogservice - version: v1 + version: "1.0" name: auditlogservice namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: auditlogservice - version: v1 + version: "1.0" spec: containers: - env: - name: PITSTOP_ENVIRONMENT value: Production - image: pitstop/auditlogservice:latest + image: pitstop/auditlogservice:1.0 imagePullPolicy: IfNotPresent name: auditlogservice restartPolicy: Always diff --git a/src/k8s/customermanagementapi-canary.yaml b/src/k8s/customermanagementapi-canary.yaml index 72513b85..ba3db52e 100644 --- a/src/k8s/customermanagementapi-canary.yaml +++ b/src/k8s/customermanagementapi-canary.yaml @@ -6,12 +6,12 @@ metadata: spec: host: customermanagementapi subsets: - - name: version-v1 + - name: v1 labels: - version: v1 - - name: version-v2 + version: "1.0" + - name: v2 labels: - version: v2 + version: "2.0" --- @@ -27,9 +27,9 @@ spec: - route: - destination: host: customermanagementapi - subset: version-v1 + subset: v1 weight: 90 - destination: host: customermanagementapi - subset: version-v2 + subset: v2 weight: 10 diff --git a/src/k8s/customermanagementapi-mirror.yaml b/src/k8s/customermanagementapi-mirror.yaml index 2a8ceb4f..768fee51 100644 --- a/src/k8s/customermanagementapi-mirror.yaml +++ b/src/k8s/customermanagementapi-mirror.yaml @@ -6,12 +6,12 @@ metadata: spec: host: customermanagementapi subsets: - - name: version-v1 + - name: v1 labels: - version: v1 - - name: version-v2 + version: "1.0" + - name: v2 labels: - version: v2 + version: "2.0" --- @@ -27,8 +27,8 @@ spec: - route: - destination: host: customermanagementapi - subset: version-v1 + subset: v1 weight: 100 mirror: host: customermanagementapi - subset: version-v2 + subset: v2 diff --git a/src/k8s/customermanagementapi-svc.yaml b/src/k8s/customermanagementapi-svc.yaml index 324a380b..2bc42aaf 100644 --- a/src/k8s/customermanagementapi-svc.yaml +++ b/src/k8s/customermanagementapi-svc.yaml @@ -16,4 +16,4 @@ spec: selector: system: pitstop app: customermanagementapi - version: v1 \ No newline at end of file + version: "1.0" \ No newline at end of file diff --git a/src/k8s/customermanagementapi-v1-istio.yaml b/src/k8s/customermanagementapi-v1-istio.yaml index 8a4d7ee8..471d7f9a 100644 --- a/src/k8s/customermanagementapi-v1-istio.yaml +++ b/src/k8s/customermanagementapi-v1-istio.yaml @@ -5,27 +5,32 @@ metadata: labels: app: customermanagementapi system: pitstop - version: v1 + version: "1.0" name: customermanagementapi-v1 namespace: pitstop spec: replicas: 1 + selector: null strategy: {} template: metadata: annotations: - sidecar.istio.io/status: '{"version":"f5ccf91fad7f2d056f204a075aff1128670ca6997fecdeccaf7a2af6a498558c","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + sidecar.istio.io/interceptionMode: REDIRECT + sidecar.istio.io/status: '{"version":"610f2b5742375d30d7f484e296fd022086a4c611b5a6b136bcf0758767fefecc","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + traffic.sidecar.istio.io/excludeInboundPorts: "15020" + traffic.sidecar.istio.io/includeInboundPorts: "5100" + traffic.sidecar.istio.io/includeOutboundIPRanges: '*' creationTimestamp: null labels: app: customermanagementapi system: pitstop - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/customermanagementapi:v1 + image: pitstop/customermanagementapi:1.0 imagePullPolicy: IfNotPresent name: customermanagementapi ports: @@ -50,6 +55,8 @@ spec: - istio-pilot.istio-system:15010 - --zipkinAddress - zipkin.istio-system:9411 + - --dnsRefreshRate + - 300s - --connectTimeout - 10s - --proxyAdminPort @@ -67,6 +74,13 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name + - name: ISTIO_META_POD_PORTS + value: |- + [ + {"containerPort":5100} + ] + - name: ISTIO_META_CLUSTER_ID + value: Kubernetes - name: POD_NAMESPACE valueFrom: fieldRef: @@ -75,6 +89,10 @@ spec: valueFrom: fieldRef: fieldPath: status.podIP + - name: SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName - name: ISTIO_META_POD_NAME valueFrom: fieldRef: @@ -83,12 +101,20 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: SDS_ENABLED + value: "false" - name: ISTIO_META_INTERCEPTION_MODE value: REDIRECT + - name: ISTIO_META_INCLUDE_INBOUND_PORTS + value: "5100" - name: ISTIO_METAJSON_LABELS value: | - {"app":"customermanagementapi","system":"pitstop","version":"v1"} - image: docker.io/istio/proxyv2:1.1.7 + {"app":"customermanagementapi","system":"pitstop","version":"1.0"} + - name: ISTIO_META_WORKLOAD_NAME + value: customermanagementapi-v1 + - name: ISTIO_META_OWNER + value: kubernetes://api/extensions/v1beta1/namespaces/pitstop/deployments/customermanagementapi-v1 + image: docker.io/istio/proxyv2:1.3.0 imagePullPolicy: IfNotPresent name: istio-proxy ports: @@ -122,6 +148,8 @@ spec: - args: - -p - "15001" + - -z + - "15006" - -u - "1337" - -m @@ -131,10 +159,10 @@ spec: - -x - "" - -b - - "5100" + - '*' - -d - "15020" - image: docker.io/istio/proxy_init:1.1.7 + image: docker.io/istio/proxy_init:1.3.0 imagePullPolicy: IfNotPresent name: istio-init resources: diff --git a/src/k8s/customermanagementapi-v1-linkerd.yaml b/src/k8s/customermanagementapi-v1-linkerd.yaml index 77d7f29e..e69de29b 100644 --- a/src/k8s/customermanagementapi-v1-linkerd.yaml +++ b/src/k8s/customermanagementapi-v1-linkerd.yaml @@ -1,149 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - creationTimestamp: null - labels: - app: customermanagementapi - system: pitstop - version: v1 - name: customermanagementapi-v1 - namespace: pitstop -spec: - replicas: 1 - strategy: {} - template: - metadata: - annotations: - linkerd.io/created-by: linkerd/cli stable-2.3.0 - linkerd.io/identity-mode: default - linkerd.io/proxy-version: stable-2.3.0 - creationTimestamp: null - labels: - app: customermanagementapi - linkerd.io/control-plane-ns: linkerd - linkerd.io/proxy-deployment: customermanagementapi-v1 - system: pitstop - version: v1 - spec: - containers: - - env: - - name: ASPNETCORE_ENVIRONMENT - value: Production - image: pitstop/customermanagementapi:v1 - imagePullPolicy: IfNotPresent - name: customermanagementapi - ports: - - containerPort: 5100 - resources: {} - - env: - - name: LINKERD2_PROXY_LOG - value: warn,linkerd2_proxy=info - - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR - value: linkerd-destination.linkerd.svc.cluster.local:8086 - - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR - value: 0.0.0.0:4190 - - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR - value: 0.0.0.0:4191 - - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR - value: 127.0.0.1:4140 - - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR - value: 0.0.0.0:4143 - - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES - value: svc.cluster.local. - - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE - value: 10000ms - - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE - value: 10000ms - - name: _pod_ns - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LINKERD2_PROXY_DESTINATION_CONTEXT - value: ns:$(_pod_ns) - - name: LINKERD2_PROXY_IDENTITY_DIR - value: /var/run/linkerd/identity/end-entity - - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS - value: | - -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw - QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= - -----END CERTIFICATE----- - - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE - value: /var/run/secrets/kubernetes.io/serviceaccount/token - - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR - value: linkerd-identity.linkerd.svc.cluster.local:8080 - - name: _pod_sa - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - - name: _l5d_ns - value: linkerd - - name: _l5d_trustdomain - value: cluster.local - - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME - value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_IDENTITY_SVC_NAME - value: linkerd-identity.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_DESTINATION_SVC_NAME - value: linkerd-controller.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - image: gcr.io/linkerd-io/proxy:stable-2.3.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /metrics - port: 4191 - initialDelaySeconds: 10 - name: linkerd-proxy - ports: - - containerPort: 4143 - name: linkerd-proxy - - containerPort: 4191 - name: linkerd-admin - readinessProbe: - httpGet: - path: /ready - port: 4191 - initialDelaySeconds: 2 - resources: {} - securityContext: - runAsUser: 2102 - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /var/run/linkerd/identity/end-entity - name: linkerd-identity-end-entity - initContainers: - - args: - - --incoming-proxy-port - - "4143" - - --outgoing-proxy-port - - "4140" - - --proxy-uid - - "2102" - - --inbound-ports-to-ignore - - 4190,4191 - image: gcr.io/linkerd-io/proxy-init:stable-2.3.0 - imagePullPolicy: IfNotPresent - name: linkerd-init - resources: {} - securityContext: - capabilities: - add: - - NET_ADMIN - privileged: false - runAsNonRoot: false - runAsUser: 0 - terminationMessagePolicy: FallbackToLogsOnError - restartPolicy: Always - volumes: - - emptyDir: - medium: Memory - name: linkerd-identity-end-entity -status: {} ---- diff --git a/src/k8s/customermanagementapi-v1.yaml b/src/k8s/customermanagementapi-v1.yaml index 3254dbb2..4fa4b43b 100644 --- a/src/k8s/customermanagementapi-v1.yaml +++ b/src/k8s/customermanagementapi-v1.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: customermanagementapi - version: v1 + version: "1.0" name: customermanagementapi-v1 namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: customermanagementapi - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/customermanagementapi:v1 + image: pitstop/customermanagementapi:1.0 imagePullPolicy: IfNotPresent name: customermanagementapi ports: diff --git a/src/k8s/customermanagementapi-v2-istio.yaml b/src/k8s/customermanagementapi-v2-istio.yaml index 2555d5c2..388ab67f 100644 --- a/src/k8s/customermanagementapi-v2-istio.yaml +++ b/src/k8s/customermanagementapi-v2-istio.yaml @@ -5,27 +5,32 @@ metadata: labels: app: customermanagementapi system: pitstop - version: v2 + version: "2.0" name: customermanagementapi-v2 namespace: pitstop spec: replicas: 1 + selector: null strategy: {} template: metadata: annotations: - sidecar.istio.io/status: '{"version":"f5ccf91fad7f2d056f204a075aff1128670ca6997fecdeccaf7a2af6a498558c","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + sidecar.istio.io/interceptionMode: REDIRECT + sidecar.istio.io/status: '{"version":"610f2b5742375d30d7f484e296fd022086a4c611b5a6b136bcf0758767fefecc","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + traffic.sidecar.istio.io/excludeInboundPorts: "15020" + traffic.sidecar.istio.io/includeInboundPorts: "5100" + traffic.sidecar.istio.io/includeOutboundIPRanges: '*' creationTimestamp: null labels: app: customermanagementapi system: pitstop - version: v2 + version: "2.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/customermanagementapi:v2 + image: pitstop/customermanagementapi:2.0 imagePullPolicy: IfNotPresent name: customermanagementapi ports: @@ -50,6 +55,8 @@ spec: - istio-pilot.istio-system:15010 - --zipkinAddress - zipkin.istio-system:9411 + - --dnsRefreshRate + - 300s - --connectTimeout - 10s - --proxyAdminPort @@ -67,6 +74,13 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name + - name: ISTIO_META_POD_PORTS + value: |- + [ + {"containerPort":5100} + ] + - name: ISTIO_META_CLUSTER_ID + value: Kubernetes - name: POD_NAMESPACE valueFrom: fieldRef: @@ -75,6 +89,10 @@ spec: valueFrom: fieldRef: fieldPath: status.podIP + - name: SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName - name: ISTIO_META_POD_NAME valueFrom: fieldRef: @@ -83,12 +101,20 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: SDS_ENABLED + value: "false" - name: ISTIO_META_INTERCEPTION_MODE value: REDIRECT + - name: ISTIO_META_INCLUDE_INBOUND_PORTS + value: "5100" - name: ISTIO_METAJSON_LABELS value: | - {"app":"customermanagementapi","system":"pitstop","version":"v2"} - image: docker.io/istio/proxyv2:1.1.7 + {"app":"customermanagementapi","system":"pitstop","version":"2.0"} + - name: ISTIO_META_WORKLOAD_NAME + value: customermanagementapi-v2 + - name: ISTIO_META_OWNER + value: kubernetes://api/extensions/v1beta1/namespaces/pitstop/deployments/customermanagementapi-v2 + image: docker.io/istio/proxyv2:1.3.0 imagePullPolicy: IfNotPresent name: istio-proxy ports: @@ -122,6 +148,8 @@ spec: - args: - -p - "15001" + - -z + - "15006" - -u - "1337" - -m @@ -131,10 +159,10 @@ spec: - -x - "" - -b - - "5100" + - '*' - -d - "15020" - image: docker.io/istio/proxy_init:1.1.7 + image: docker.io/istio/proxy_init:1.3.0 imagePullPolicy: IfNotPresent name: istio-init resources: diff --git a/src/k8s/customermanagementapi-v2-linkerd.yaml b/src/k8s/customermanagementapi-v2-linkerd.yaml index 1e8e2ea8..e69de29b 100644 --- a/src/k8s/customermanagementapi-v2-linkerd.yaml +++ b/src/k8s/customermanagementapi-v2-linkerd.yaml @@ -1,149 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - creationTimestamp: null - labels: - app: customermanagementapi - system: pitstop - version: v2 - name: customermanagementapi-v2 - namespace: pitstop -spec: - replicas: 1 - strategy: {} - template: - metadata: - annotations: - linkerd.io/created-by: linkerd/cli stable-2.3.0 - linkerd.io/identity-mode: default - linkerd.io/proxy-version: stable-2.3.0 - creationTimestamp: null - labels: - app: customermanagementapi - linkerd.io/control-plane-ns: linkerd - linkerd.io/proxy-deployment: customermanagementapi-v2 - system: pitstop - version: v2 - spec: - containers: - - env: - - name: ASPNETCORE_ENVIRONMENT - value: Production - image: pitstop/customermanagementapi:v2 - imagePullPolicy: IfNotPresent - name: customermanagementapi - ports: - - containerPort: 5100 - resources: {} - - env: - - name: LINKERD2_PROXY_LOG - value: warn,linkerd2_proxy=info - - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR - value: linkerd-destination.linkerd.svc.cluster.local:8086 - - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR - value: 0.0.0.0:4190 - - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR - value: 0.0.0.0:4191 - - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR - value: 127.0.0.1:4140 - - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR - value: 0.0.0.0:4143 - - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES - value: svc.cluster.local. - - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE - value: 10000ms - - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE - value: 10000ms - - name: _pod_ns - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LINKERD2_PROXY_DESTINATION_CONTEXT - value: ns:$(_pod_ns) - - name: LINKERD2_PROXY_IDENTITY_DIR - value: /var/run/linkerd/identity/end-entity - - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS - value: | - -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw - QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= - -----END CERTIFICATE----- - - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE - value: /var/run/secrets/kubernetes.io/serviceaccount/token - - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR - value: linkerd-identity.linkerd.svc.cluster.local:8080 - - name: _pod_sa - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - - name: _l5d_ns - value: linkerd - - name: _l5d_trustdomain - value: cluster.local - - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME - value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_IDENTITY_SVC_NAME - value: linkerd-identity.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_DESTINATION_SVC_NAME - value: linkerd-controller.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - image: gcr.io/linkerd-io/proxy:stable-2.3.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /metrics - port: 4191 - initialDelaySeconds: 10 - name: linkerd-proxy - ports: - - containerPort: 4143 - name: linkerd-proxy - - containerPort: 4191 - name: linkerd-admin - readinessProbe: - httpGet: - path: /ready - port: 4191 - initialDelaySeconds: 2 - resources: {} - securityContext: - runAsUser: 2102 - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /var/run/linkerd/identity/end-entity - name: linkerd-identity-end-entity - initContainers: - - args: - - --incoming-proxy-port - - "4143" - - --outgoing-proxy-port - - "4140" - - --proxy-uid - - "2102" - - --inbound-ports-to-ignore - - 4190,4191 - image: gcr.io/linkerd-io/proxy-init:stable-2.3.0 - imagePullPolicy: IfNotPresent - name: linkerd-init - resources: {} - securityContext: - capabilities: - add: - - NET_ADMIN - privileged: false - runAsNonRoot: false - runAsUser: 0 - terminationMessagePolicy: FallbackToLogsOnError - restartPolicy: Always - volumes: - - emptyDir: - medium: Memory - name: linkerd-identity-end-entity -status: {} ---- diff --git a/src/k8s/customermanagementapi-v2.yaml b/src/k8s/customermanagementapi-v2.yaml index 0a567f28..0963b658 100644 --- a/src/k8s/customermanagementapi-v2.yaml +++ b/src/k8s/customermanagementapi-v2.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: customermanagementapi - version: v2 + version: "2.0" name: customermanagementapi-v2 namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: customermanagementapi - version: v2 + version: "2.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/customermanagementapi:v2 + image: pitstop/customermanagementapi:2.0 imagePullPolicy: IfNotPresent name: customermanagementapi ports: diff --git a/src/k8s/invoiceservice.yaml b/src/k8s/invoiceservice.yaml index 6071d694..69aa584e 100644 --- a/src/k8s/invoiceservice.yaml +++ b/src/k8s/invoiceservice.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: invoiceservice - version: v1 + version: "1.0" name: invoiceservice namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: invoiceservice - version: v1 + version: "1.0" spec: containers: - env: - name: PITSTOP_ENVIRONMENT value: Production - image: pitstop/invoiceservice:latest + image: pitstop/invoiceservice:1.0 imagePullPolicy: IfNotPresent name: invoiceservice restartPolicy: Always diff --git a/src/k8s/linkerd/install.yaml b/src/k8s/linkerd/linkerd.yaml similarity index 91% rename from src/k8s/linkerd/install.yaml rename to src/k8s/linkerd/linkerd.yaml index eb3413d9..add276dd 100644 --- a/src/k8s/linkerd/install.yaml +++ b/src/k8s/linkerd/linkerd.yaml @@ -15,11 +15,11 @@ metadata: linkerd.io/created-by: linkerd/cli stable-2.3.0 data: global: | - {"linkerdNamespace":"linkerd","cniEnabled":false,"version":"stable-2.3.0","identityContext":{"trustDomain":"cluster.local","trustAnchorsPem":"-----BEGIN CERTIFICATE-----\nMIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0\neS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3\nMDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j\nYWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm\nCq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw\nQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC\nMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw\nhIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V\ncmSf9B4T+UM=\n-----END CERTIFICATE-----\n","issuanceLifetime":"86400s","clockSkewAllowance":"20s"},"autoInjectContext":null} + {"linkerdNamespace":"linkerd","cniEnabled":false,"version":"stable-2.3.0","identityContext":{"trustDomain":"cluster.local","trustAnchorsPem":"-----BEGIN CERTIFICATE-----\nMIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0\neS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0\nMTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j\nYWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw\nd3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw\nQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC\nMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3\npJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH\nuEH4gRhKdg==\n-----END CERTIFICATE-----\n","issuanceLifetime":"86400s","clockSkewAllowance":"20s"},"autoInjectContext":null} proxy: | {"proxyImage":{"imageName":"gcr.io/linkerd-io/proxy","pullPolicy":"IfNotPresent"},"proxyInitImage":{"imageName":"gcr.io/linkerd-io/proxy-init","pullPolicy":"IfNotPresent"},"controlPort":{"port":4190},"ignoreInboundPorts":[],"ignoreOutboundPorts":[],"inboundPort":{"port":4143},"adminPort":{"port":4191},"outboundPort":{"port":4140},"resource":{"requestCpu":"","requestMemory":"","limitCpu":"","limitMemory":""},"proxyUid":"2102","logLevel":{"level":"warn,linkerd2_proxy=info"},"disableExternalProfiles":true} install: | - {"uuid":"6b853269-69c2-47fc-8ba7-6e82a793dd46","cliVersion":"stable-2.3.0","flags":[]} + {"uuid":"37f9a0dd-5d73-4541-9541-3eadbbc3f9de","cliVersion":"stable-2.3.0","flags":[]} --- ### ### Identity Controller Service @@ -80,10 +80,10 @@ metadata: linkerd.io/control-plane-component: identity annotations: linkerd.io/created-by: linkerd/cli stable-2.3.0 - linkerd.io/identity-issuer-expiry: 2020-04-17T05:56:17Z + linkerd.io/identity-issuer-expiry: 2020-09-24T13:39:52Z data: - crt.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJoRENDQVNtZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQXBNU2N3SlFZRFZRUURFeDVwWkdWdWRHbDAKZVM1c2FXNXJaWEprTG1Oc2RYTjBaWEl1Ykc5allXd3dIaGNOTVRrd05ERTRNRFUxTlRVM1doY05NakF3TkRFMwpNRFUxTmpFM1dqQXBNU2N3SlFZRFZRUURFeDVwWkdWdWRHbDBlUzVzYVc1clpYSmtMbU5zZFhOMFpYSXViRzlqCllXd3dXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUkdqUFRUdG5jQlgwZ0FXSkVRWmtQQkpqeG0KQ3E1LzFmU0tKSkcvWExBMzExRVFEdTJCcTFBdWxmN3BialhOMFdUWDNMK095S2djSmxRZ2lnVzRsc1o4bzBJdwpRREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0VHQ0NzR0FRVUZCd01DCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3UmdJaEFLTUVxZFpqS0VQeTdGS3cKaElwMm04eWtqU21wZ0ppcit5cUdvNTFLeW5xbkFpRUE3RWlJVkMxTFRYRWp4NHlEcXBvM1VlaW04aTBUeVYvVgpjbVNmOUI0VCtVTT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= - key.pem: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUorczFrR2VWTGZFK1BWeDJ4NngyaTdmcUNLVHMweVNPMDFLWWZ2dmowcWZvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFUm96MDA3WjNBVjlJQUZpUkVHWkR3U1k4WmdxdWY5WDBpaVNSdjF5d045ZFJFQTd0Z2F0UQpMcFgrNlc0MXpkRmsxOXkvanNpb0hDWlVJSW9GdUpiR2ZBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + crt.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJnekNDQVNtZ0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQXBNU2N3SlFZRFZRUURFeDVwWkdWdWRHbDAKZVM1c2FXNXJaWEprTG1Oc2RYTjBaWEl1Ykc5allXd3dIaGNOTVRrd09USTFNVE16T1RNeVdoY05NakF3T1RJMApNVE16T1RVeVdqQXBNU2N3SlFZRFZRUURFeDVwWkdWdWRHbDBlUzVzYVc1clpYSmtMbU5zZFhOMFpYSXViRzlqCllXd3dXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW1Za2dTZWlWYVJ0dy9oTnNabS9vQnU3aXcKZDNXNnBCZis3d1hkdjA3dERJWU45dUJBdkYyekNndU1udzBPQ05SV3N4clpRRDRIL1p4YlowYVREOUgzbzBJdwpRREFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0VHQ0NzR0FRVUZCd01DCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0NnWUlLb1pJemowRUF3SURTQUF3UlFJZ05oWkl1S2xRZEtBaDhXZjMKcEpBWWduN01nc3E2QkxzWFM3a1V5QkJpc3VNQ0lRQ25OZW1PTFdQOG5uSUpoYlJOYWNxZmxpenhBZ2Y2YW5nSAp1RUg0Z1JoS2RnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + key.pem: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUwyTXR1RTY5T2RudUZpNDRqTDVpSTlHajZQdGw2WHhNek5qNnl5NUd5SGtvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFSm1KSUVub2xXa2JjUDRUYkdadjZBYnU0c0hkMXVxUVgvdThGM2I5TzdReUdEZmJnUUx4ZApzd29Mako4TkRnalVWck1hMlVBK0IvMmNXMmRHa3cvUjl3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= --- apiVersion: extensions/v1beta1 kind: Deployment @@ -170,15 +170,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0 + MTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw + d3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3 + pJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH + uEH4gRhKdg== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token @@ -477,15 +477,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0 + MTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw + d3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3 + pJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH + uEH4gRhKdg== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token @@ -785,15 +785,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0 + MTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw + d3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3 + pJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH + uEH4gRhKdg== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token @@ -1012,15 +1012,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0 + MTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw + d3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3 + pJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH + uEH4gRhKdg== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token @@ -1300,15 +1300,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0 + MTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw + d3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3 + pJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH + uEH4gRhKdg== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token @@ -1588,15 +1588,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzOTMyWhcNMjAwOTI0 + MTMzOTUyWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmYkgSeiVaRtw/hNsZm/oBu7iw + d3W6pBf+7wXdv07tDIYN9uBAvF2zCguMnw0OCNRWsxrZQD4H/ZxbZ0aTD9H3o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgNhZIuKlQdKAh8Wf3 + pJAYgn7Mgsq6BLsXS7kUyBBisuMCIQCnNemOLWP8nnIJhbRNacqflizxAgf6angH + uEH4gRhKdg== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token diff --git a/src/k8s/notificationservice.yaml b/src/k8s/notificationservice.yaml index ec7b1eed..49c6d2ea 100644 --- a/src/k8s/notificationservice.yaml +++ b/src/k8s/notificationservice.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: notificationservice - version: v1 + version: "1.0" name: notificationservice namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: notificationservice - version: v1 + version: "1.0" spec: containers: - env: - name: PITSTOP_ENVIRONMENT value: Production - image: pitstop/notificationservice:latest + image: pitstop/notificationservice:1.0 imagePullPolicy: IfNotPresent name: notificationservice restartPolicy: Always diff --git a/src/k8s/timeservice.yaml b/src/k8s/timeservice.yaml index 121d4f39..79f3de47 100644 --- a/src/k8s/timeservice.yaml +++ b/src/k8s/timeservice.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: timeservice - version: v1 + version: "1.0" name: timeservice namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: timeservice - version: v1 + version: "1.0" spec: containers: - env: - name: PITSTOP_ENVIRONMENT value: Production - image: pitstop/timeservice:latest + image: pitstop/timeservice:1.0 imagePullPolicy: IfNotPresent name: timeservice restartPolicy: Always diff --git a/src/k8s/vehiclemanagementapi-istio.yaml b/src/k8s/vehiclemanagementapi-istio.yaml index e10267a5..5985cc97 100644 --- a/src/k8s/vehiclemanagementapi-istio.yaml +++ b/src/k8s/vehiclemanagementapi-istio.yaml @@ -5,27 +5,32 @@ metadata: labels: app: vehiclemanagementapi system: pitstop - version: v1 + version: "1.0" name: vehiclemanagementapi namespace: pitstop spec: replicas: 1 + selector: null strategy: {} template: metadata: annotations: - sidecar.istio.io/status: '{"version":"f5ccf91fad7f2d056f204a075aff1128670ca6997fecdeccaf7a2af6a498558c","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + sidecar.istio.io/interceptionMode: REDIRECT + sidecar.istio.io/status: '{"version":"610f2b5742375d30d7f484e296fd022086a4c611b5a6b136bcf0758767fefecc","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + traffic.sidecar.istio.io/excludeInboundPorts: "15020" + traffic.sidecar.istio.io/includeInboundPorts: "5000" + traffic.sidecar.istio.io/includeOutboundIPRanges: '*' creationTimestamp: null labels: app: vehiclemanagementapi system: pitstop - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/vehiclemanagementapi:latest + image: pitstop/vehiclemanagementapi:1.0 imagePullPolicy: IfNotPresent name: vehiclemanagementapi ports: @@ -50,6 +55,8 @@ spec: - istio-pilot.istio-system:15010 - --zipkinAddress - zipkin.istio-system:9411 + - --dnsRefreshRate + - 300s - --connectTimeout - 10s - --proxyAdminPort @@ -67,6 +74,13 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name + - name: ISTIO_META_POD_PORTS + value: |- + [ + {"containerPort":5000} + ] + - name: ISTIO_META_CLUSTER_ID + value: Kubernetes - name: POD_NAMESPACE valueFrom: fieldRef: @@ -75,6 +89,10 @@ spec: valueFrom: fieldRef: fieldPath: status.podIP + - name: SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName - name: ISTIO_META_POD_NAME valueFrom: fieldRef: @@ -83,12 +101,20 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: SDS_ENABLED + value: "false" - name: ISTIO_META_INTERCEPTION_MODE value: REDIRECT + - name: ISTIO_META_INCLUDE_INBOUND_PORTS + value: "5000" - name: ISTIO_METAJSON_LABELS value: | - {"app":"vehiclemanagementapi","system":"pitstop","version":"v1"} - image: docker.io/istio/proxyv2:1.1.7 + {"app":"vehiclemanagementapi","system":"pitstop","version":"1.0"} + - name: ISTIO_META_WORKLOAD_NAME + value: vehiclemanagementapi + - name: ISTIO_META_OWNER + value: kubernetes://api/extensions/v1beta1/namespaces/pitstop/deployments/vehiclemanagementapi + image: docker.io/istio/proxyv2:1.3.0 imagePullPolicy: IfNotPresent name: istio-proxy ports: @@ -122,6 +148,8 @@ spec: - args: - -p - "15001" + - -z + - "15006" - -u - "1337" - -m @@ -131,10 +159,10 @@ spec: - -x - "" - -b - - "5000" + - '*' - -d - "15020" - image: docker.io/istio/proxy_init:1.1.7 + image: docker.io/istio/proxy_init:1.3.0 imagePullPolicy: IfNotPresent name: istio-init resources: @@ -168,7 +196,7 @@ metadata: labels: system: pitstop app: vehiclemanagementapi - version: v1 + version: "1.0" name: vehiclemanagementapi namespace: pitstop spec: @@ -181,6 +209,6 @@ spec: selector: system: pitstop app: vehiclemanagementapi - version: v1 + version: "1.0" --- diff --git a/src/k8s/vehiclemanagementapi-linkerd.yaml b/src/k8s/vehiclemanagementapi-linkerd.yaml index 27f36958..e69de29b 100644 --- a/src/k8s/vehiclemanagementapi-linkerd.yaml +++ b/src/k8s/vehiclemanagementapi-linkerd.yaml @@ -1,172 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - creationTimestamp: null - labels: - app: vehiclemanagementapi - system: pitstop - version: v1 - name: vehiclemanagementapi - namespace: pitstop -spec: - replicas: 1 - strategy: {} - template: - metadata: - annotations: - linkerd.io/created-by: linkerd/cli stable-2.3.0 - linkerd.io/identity-mode: default - linkerd.io/proxy-version: stable-2.3.0 - creationTimestamp: null - labels: - app: vehiclemanagementapi - linkerd.io/control-plane-ns: linkerd - linkerd.io/proxy-deployment: vehiclemanagementapi - system: pitstop - version: v1 - spec: - containers: - - env: - - name: ASPNETCORE_ENVIRONMENT - value: Production - image: pitstop/vehiclemanagementapi:latest - imagePullPolicy: IfNotPresent - name: vehiclemanagementapi - ports: - - containerPort: 5000 - resources: {} - - env: - - name: LINKERD2_PROXY_LOG - value: warn,linkerd2_proxy=info - - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR - value: linkerd-destination.linkerd.svc.cluster.local:8086 - - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR - value: 0.0.0.0:4190 - - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR - value: 0.0.0.0:4191 - - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR - value: 127.0.0.1:4140 - - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR - value: 0.0.0.0:4143 - - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES - value: svc.cluster.local. - - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE - value: 10000ms - - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE - value: 10000ms - - name: _pod_ns - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LINKERD2_PROXY_DESTINATION_CONTEXT - value: ns:$(_pod_ns) - - name: LINKERD2_PROXY_IDENTITY_DIR - value: /var/run/linkerd/identity/end-entity - - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS - value: | - -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw - QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= - -----END CERTIFICATE----- - - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE - value: /var/run/secrets/kubernetes.io/serviceaccount/token - - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR - value: linkerd-identity.linkerd.svc.cluster.local:8080 - - name: _pod_sa - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - - name: _l5d_ns - value: linkerd - - name: _l5d_trustdomain - value: cluster.local - - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME - value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_IDENTITY_SVC_NAME - value: linkerd-identity.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_DESTINATION_SVC_NAME - value: linkerd-controller.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - image: gcr.io/linkerd-io/proxy:stable-2.3.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /metrics - port: 4191 - initialDelaySeconds: 10 - name: linkerd-proxy - ports: - - containerPort: 4143 - name: linkerd-proxy - - containerPort: 4191 - name: linkerd-admin - readinessProbe: - httpGet: - path: /ready - port: 4191 - initialDelaySeconds: 2 - resources: {} - securityContext: - runAsUser: 2102 - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /var/run/linkerd/identity/end-entity - name: linkerd-identity-end-entity - initContainers: - - args: - - --incoming-proxy-port - - "4143" - - --outgoing-proxy-port - - "4140" - - --proxy-uid - - "2102" - - --inbound-ports-to-ignore - - 4190,4191 - image: gcr.io/linkerd-io/proxy-init:stable-2.3.0 - imagePullPolicy: IfNotPresent - name: linkerd-init - resources: {} - securityContext: - capabilities: - add: - - NET_ADMIN - privileged: false - runAsNonRoot: false - runAsUser: 0 - terminationMessagePolicy: FallbackToLogsOnError - restartPolicy: Always - volumes: - - emptyDir: - medium: Memory - name: linkerd-identity-end-entity -status: {} ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - system: pitstop - app: vehiclemanagementapi - version: v1 - name: vehiclemanagementapi - namespace: pitstop -spec: - type: NodePort - ports: - - name: "http-5000" - port: 5000 - targetPort: 5000 - nodePort: 30006 - selector: - system: pitstop - app: vehiclemanagementapi - version: v1 - ---- diff --git a/src/k8s/vehiclemanagementapi.yaml b/src/k8s/vehiclemanagementapi.yaml index 29e84609..12c08b4e 100644 --- a/src/k8s/vehiclemanagementapi.yaml +++ b/src/k8s/vehiclemanagementapi.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: vehiclemanagementapi - version: v1 + version: "1.0" name: vehiclemanagementapi namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: vehiclemanagementapi - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/vehiclemanagementapi:latest + image: pitstop/vehiclemanagementapi:1.0 imagePullPolicy: IfNotPresent name: vehiclemanagementapi ports: @@ -35,7 +35,7 @@ metadata: labels: system: pitstop app: vehiclemanagementapi - version: v1 + version: "1.0" name: vehiclemanagementapi namespace: pitstop spec: @@ -48,5 +48,5 @@ spec: selector: system: pitstop app: vehiclemanagementapi - version: v1 + version: "1.0" diff --git a/src/k8s/webapp-istio.yaml b/src/k8s/webapp-istio.yaml index 2db1f0c0..1a8cc4f0 100644 Binary files a/src/k8s/webapp-istio.yaml and b/src/k8s/webapp-istio.yaml differ diff --git a/src/k8s/webapp-linkerd.yaml b/src/k8s/webapp-linkerd.yaml index a52364cf..e69de29b 100644 --- a/src/k8s/webapp-linkerd.yaml +++ b/src/k8s/webapp-linkerd.yaml @@ -1,171 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - creationTimestamp: null - labels: - app: webpp - system: pitstop - version: v1 - name: webapp - namespace: pitstop -spec: - replicas: 1 - strategy: {} - template: - metadata: - annotations: - linkerd.io/created-by: linkerd/cli stable-2.3.0 - linkerd.io/identity-mode: default - linkerd.io/proxy-version: stable-2.3.0 - creationTimestamp: null - labels: - app: webpp - linkerd.io/control-plane-ns: linkerd - linkerd.io/proxy-deployment: webapp - system: pitstop - version: v1 - spec: - containers: - - env: - - name: ASPNETCORE_ENVIRONMENT - value: Production - image: pitstop/webapp:latest - imagePullPolicy: IfNotPresent - name: webapp - ports: - - containerPort: 7000 - resources: {} - - env: - - name: LINKERD2_PROXY_LOG - value: warn,linkerd2_proxy=info - - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR - value: linkerd-destination.linkerd.svc.cluster.local:8086 - - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR - value: 0.0.0.0:4190 - - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR - value: 0.0.0.0:4191 - - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR - value: 127.0.0.1:4140 - - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR - value: 0.0.0.0:4143 - - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES - value: svc.cluster.local. - - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE - value: 10000ms - - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE - value: 10000ms - - name: _pod_ns - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LINKERD2_PROXY_DESTINATION_CONTEXT - value: ns:$(_pod_ns) - - name: LINKERD2_PROXY_IDENTITY_DIR - value: /var/run/linkerd/identity/end-entity - - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS - value: | - -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw - QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= - -----END CERTIFICATE----- - - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE - value: /var/run/secrets/kubernetes.io/serviceaccount/token - - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR - value: linkerd-identity.linkerd.svc.cluster.local:8080 - - name: _pod_sa - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - - name: _l5d_ns - value: linkerd - - name: _l5d_trustdomain - value: cluster.local - - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME - value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_IDENTITY_SVC_NAME - value: linkerd-identity.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - - name: LINKERD2_PROXY_DESTINATION_SVC_NAME - value: linkerd-controller.$(_l5d_ns).serviceaccount.identity.$(_l5d_ns).$(_l5d_trustdomain) - image: gcr.io/linkerd-io/proxy:stable-2.3.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /metrics - port: 4191 - initialDelaySeconds: 10 - name: linkerd-proxy - ports: - - containerPort: 4143 - name: linkerd-proxy - - containerPort: 4191 - name: linkerd-admin - readinessProbe: - httpGet: - path: /ready - port: 4191 - initialDelaySeconds: 2 - resources: {} - securityContext: - runAsUser: 2102 - terminationMessagePolicy: FallbackToLogsOnError - volumeMounts: - - mountPath: /var/run/linkerd/identity/end-entity - name: linkerd-identity-end-entity - initContainers: - - args: - - --incoming-proxy-port - - "4143" - - --outgoing-proxy-port - - "4140" - - --proxy-uid - - "2102" - - --inbound-ports-to-ignore - - 4190,4191 - image: gcr.io/linkerd-io/proxy-init:stable-2.3.0 - imagePullPolicy: IfNotPresent - name: linkerd-init - resources: {} - securityContext: - capabilities: - add: - - NET_ADMIN - privileged: false - runAsNonRoot: false - runAsUser: 0 - terminationMessagePolicy: FallbackToLogsOnError - restartPolicy: Always - volumes: - - emptyDir: - medium: Memory - name: linkerd-identity-end-entity -status: {} ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - system: pitstop - app: webpp - version: v1 - name: webapp - namespace: pitstop -spec: - type: LoadBalancer - ports: - - name: "7000" - port: 7000 - targetPort: 7000 - selector: - system: pitstop - app: webpp - version: v1 - ---- diff --git a/src/k8s/webapp.yaml b/src/k8s/webapp.yaml index 97994ad4..e2cd6fd7 100644 --- a/src/k8s/webapp.yaml +++ b/src/k8s/webapp.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: webpp - version: v1 + version: "1.0" name: webapp namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: webpp - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/webapp:latest + image: pitstop/webapp:1.0 imagePullPolicy: IfNotPresent name: webapp ports: @@ -35,7 +35,7 @@ metadata: labels: system: pitstop app: webapp - version: v1 + version: "1.0" name: webapp namespace: pitstop spec: @@ -47,5 +47,5 @@ spec: selector: system: pitstop app: webpp - version: v1 + version: "1.0" diff --git a/src/k8s/workshopmanagementapi-istio.yaml b/src/k8s/workshopmanagementapi-istio.yaml index 77dbcc40..710702ef 100644 --- a/src/k8s/workshopmanagementapi-istio.yaml +++ b/src/k8s/workshopmanagementapi-istio.yaml @@ -5,27 +5,32 @@ metadata: labels: app: workshopmanagementapi system: pitstop - version: v1 + version: "1.0" name: workshopmanagementapi namespace: pitstop spec: replicas: 1 + selector: null strategy: {} template: metadata: annotations: - sidecar.istio.io/status: '{"version":"f5ccf91fad7f2d056f204a075aff1128670ca6997fecdeccaf7a2af6a498558c","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + sidecar.istio.io/interceptionMode: REDIRECT + sidecar.istio.io/status: '{"version":"610f2b5742375d30d7f484e296fd022086a4c611b5a6b136bcf0758767fefecc","initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-certs"],"imagePullSecrets":null}' + traffic.sidecar.istio.io/excludeInboundPorts: "15020" + traffic.sidecar.istio.io/includeInboundPorts: "5200" + traffic.sidecar.istio.io/includeOutboundIPRanges: '*' creationTimestamp: null labels: app: workshopmanagementapi system: pitstop - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/workshopmanagementapi:latest + image: pitstop/workshopmanagementapi:1.0 imagePullPolicy: IfNotPresent name: workshopmanagementapi ports: @@ -50,6 +55,8 @@ spec: - istio-pilot.istio-system:15010 - --zipkinAddress - zipkin.istio-system:9411 + - --dnsRefreshRate + - 300s - --connectTimeout - 10s - --proxyAdminPort @@ -67,6 +74,13 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name + - name: ISTIO_META_POD_PORTS + value: |- + [ + {"containerPort":5200} + ] + - name: ISTIO_META_CLUSTER_ID + value: Kubernetes - name: POD_NAMESPACE valueFrom: fieldRef: @@ -75,6 +89,10 @@ spec: valueFrom: fieldRef: fieldPath: status.podIP + - name: SERVICE_ACCOUNT + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName - name: ISTIO_META_POD_NAME valueFrom: fieldRef: @@ -83,12 +101,20 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: SDS_ENABLED + value: "false" - name: ISTIO_META_INTERCEPTION_MODE value: REDIRECT + - name: ISTIO_META_INCLUDE_INBOUND_PORTS + value: "5200" - name: ISTIO_METAJSON_LABELS value: | - {"app":"workshopmanagementapi","system":"pitstop","version":"v1"} - image: docker.io/istio/proxyv2:1.1.7 + {"app":"workshopmanagementapi","system":"pitstop","version":"1.0"} + - name: ISTIO_META_WORKLOAD_NAME + value: workshopmanagementapi + - name: ISTIO_META_OWNER + value: kubernetes://api/extensions/v1beta1/namespaces/pitstop/deployments/workshopmanagementapi + image: docker.io/istio/proxyv2:1.3.0 imagePullPolicy: IfNotPresent name: istio-proxy ports: @@ -122,6 +148,8 @@ spec: - args: - -p - "15001" + - -z + - "15006" - -u - "1337" - -m @@ -131,10 +159,10 @@ spec: - -x - "" - -b - - "5200" + - '*' - -d - "15020" - image: docker.io/istio/proxy_init:1.1.7 + image: docker.io/istio/proxy_init:1.3.0 imagePullPolicy: IfNotPresent name: istio-init resources: @@ -168,7 +196,7 @@ metadata: labels: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" name: workshopmanagementapi namespace: pitstop spec: @@ -181,5 +209,5 @@ spec: selector: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" --- diff --git a/src/k8s/workshopmanagementapi-linkerd.yaml b/src/k8s/workshopmanagementapi-linkerd.yaml index a6630072..52aa9cc7 100644 --- a/src/k8s/workshopmanagementapi-linkerd.yaml +++ b/src/k8s/workshopmanagementapi-linkerd.yaml @@ -5,7 +5,7 @@ metadata: labels: app: workshopmanagementapi system: pitstop - version: v1 + version: "1.0" name: workshopmanagementapi namespace: pitstop spec: @@ -23,13 +23,13 @@ spec: linkerd.io/control-plane-ns: linkerd linkerd.io/proxy-deployment: workshopmanagementapi system: pitstop - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/workshopmanagementapi:latest + image: pitstop/workshopmanagementapi:1.0 imagePullPolicy: IfNotPresent name: workshopmanagementapi ports: @@ -65,15 +65,15 @@ spec: - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS value: | -----BEGIN CERTIFICATE----- - MIIBhDCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 - eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwNDE4MDU1NTU3WhcNMjAwNDE3 - MDU1NjE3WjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j - YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGjPTTtncBX0gAWJEQZkPBJjxm - Cq5/1fSKJJG/XLA311EQDu2Bq1Aulf7pbjXN0WTX3L+OyKgcJlQgigW4lsZ8o0Iw + MIIBgzCCASmgAwIBAgIBATAKBggqhkjOPQQDAjApMScwJQYDVQQDEx5pZGVudGl0 + eS5saW5rZXJkLmNsdXN0ZXIubG9jYWwwHhcNMTkwOTI1MTMzNTQzWhcNMjAwOTI0 + MTMzNjAzWjApMScwJQYDVQQDEx5pZGVudGl0eS5saW5rZXJkLmNsdXN0ZXIubG9j + YWwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARfUhg7gf/1Yn/0r5A0IBuob+C5 + /DAl+aQz//caFmRdeQcVS8uWs1kWhkiIPLVCGfgA5oVgnhwtuY/No8C1TH3+o0Iw QDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC - MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAKMEqdZjKEPy7FKw - hIp2m8ykjSmpgJir+yqGo51KynqnAiEA7EiIVC1LTXEjx4yDqpo3Ueim8i0TyV/V - cmSf9B4T+UM= + MA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgSx02kAAaS+0ezRre + D3VWSoLqm/Bjn4Lu/5X0ZEOz3yMCIQCoSI4YhqIXn+49nzqVD6VioRwLhFInoDop + Ms1nzSz82w== -----END CERTIFICATE----- - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE value: /var/run/secrets/kubernetes.io/serviceaccount/token @@ -154,8 +154,8 @@ metadata: labels: system: pitstop app: workshopmanagementapi - version: v1 - name: workshopmanagementapi + version: "1.0" + name: workshopmanagementapisvc namespace: pitstop spec: type: NodePort @@ -167,5 +167,5 @@ spec: selector: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" --- diff --git a/src/k8s/workshopmanagementapi.yaml b/src/k8s/workshopmanagementapi.yaml index af78fc3c..d14290da 100644 --- a/src/k8s/workshopmanagementapi.yaml +++ b/src/k8s/workshopmanagementapi.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" name: workshopmanagementapi namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" spec: containers: - env: - name: ASPNETCORE_ENVIRONMENT value: Production - image: pitstop/workshopmanagementapi:latest + image: pitstop/workshopmanagementapi:1.0 imagePullPolicy: IfNotPresent name: workshopmanagementapi ports: @@ -35,7 +35,7 @@ metadata: labels: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" name: workshopmanagementapi namespace: pitstop spec: @@ -48,4 +48,4 @@ spec: selector: system: pitstop app: workshopmanagementapi - version: v1 + version: "1.0" diff --git a/src/k8s/workshopmanagementeventhandler.yaml b/src/k8s/workshopmanagementeventhandler.yaml index e47b506a..a2408923 100644 --- a/src/k8s/workshopmanagementeventhandler.yaml +++ b/src/k8s/workshopmanagementeventhandler.yaml @@ -4,7 +4,7 @@ metadata: labels: system: pitstop app: workshopmanagementeventhandler - version: v1 + version: "1.0" name: workshopmanagementeventhandler namespace: pitstop spec: @@ -14,13 +14,13 @@ spec: labels: system: pitstop app: workshopmanagementeventhandler - version: v1 + version: "1.0" spec: containers: - env: - name: PITSTOP_ENVIRONMENT value: Production - image: pitstop/workshopmanagementeventhandler:latest + image: pitstop/workshopmanagementeventhandler:1.0 imagePullPolicy: IfNotPresent name: workshopmanagementeventhandler restartPolicy: Always diff --git a/src/push-images.ps1 b/src/push-images.ps1 index 0b4a5a3b..22018ca9 100644 --- a/src/push-images.ps1 +++ b/src/push-images.ps1 @@ -1,11 +1,10 @@ -docker push pitstop/customermanagementapi:latest -docker push pitstop/customermanagementapi:v1 -docker push pitstop/customermanagementapi/v2 -docker push pitstop/webapp:latest -docker push pitstop/workshopmanagementeventhandler:latest -docker push pitstop/timeservice:latest -docker push pitstop/notificationservice:latest -docker push pitstop/invoiceservice:latest -docker push pitstop/auditlogservice:latest -docker push pitstop/workshopmanagementapi:latest -docker push pitstop/vehiclemanagementapi:latest \ No newline at end of file +docker push pitstop/customermanagementapi:1.0 +docker push pitstop/customermanagementapi:2.0 +docker push pitstop/webapp:1.0 +docker push pitstop/workshopmanagementeventhandler:1.0 +docker push pitstop/timeservice:1.0 +docker push pitstop/notificationservice:1.0 +docker push pitstop/invoiceservice:1.0 +docker push pitstop/auditlogservice:1.0 +docker push pitstop/workshopmanagementapi:1.0 +docker push pitstop/vehiclemanagementapi:1.0 \ No newline at end of file diff --git a/src/push-images.sh b/src/push-images.sh index 06851233..e4164239 100644 --- a/src/push-images.sh +++ b/src/push-images.sh @@ -1,12 +1,11 @@ #!/bin/bash -docker push pitstop/customermanagementapi:latest -docker push pitstop/customermanagementapi:v1 -docker push pitstop/customermanagementapi/v2 -docker push pitstop/webapp:latest -docker push pitstop/workshopmanagementeventhandler:latest -docker push pitstop/timeservice:latest -docker push pitstop/notificationservice:latest -docker push pitstop/invoiceservice:latest -docker push pitstop/auditlogservice:latest -docker push pitstop/workshopmanagementapi:latest -docker push pitstop/vehiclemanagementapi:latest \ No newline at end of file +docker push pitstop/customermanagementapi:1.0 +docker push pitstop/customermanagementapi:2.0 +docker push pitstop/webapp:1.0 +docker push pitstop/workshopmanagementeventhandler:1.0 +docker push pitstop/timeservice:1.0 +docker push pitstop/notificationservice:1.0 +docker push pitstop/invoiceservice:1.0 +docker push pitstop/auditlogservice:1.0 +docker push pitstop/workshopmanagementapi:1.0 +docker push pitstop/vehiclemanagementapi:1.0 \ No newline at end of file