@datalust/seqcli-osx-arm64 2026.1.2638-dev-02638
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Attribution/.NET Core License.txt +23 -0
- package/Attribution/Autofac License.txt +21 -0
- package/Attribution/Json.NET License.txt +20 -0
- package/Attribution/Serilog License.txt +191 -0
- package/Attribution/System.Reactive License.txt +14 -0
- package/Autofac.Extensions.DependencyInjection.dll +0 -0
- package/Autofac.dll +0 -0
- package/Cli/Commands/Bench/BenchCases.json +74 -0
- package/LICENSE +201 -0
- package/Microsoft.AspNetCore.Antiforgery.dll +0 -0
- package/Microsoft.AspNetCore.Authentication.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Authentication.BearerToken.dll +0 -0
- package/Microsoft.AspNetCore.Authentication.Cookies.dll +0 -0
- package/Microsoft.AspNetCore.Authentication.Core.dll +0 -0
- package/Microsoft.AspNetCore.Authentication.OAuth.dll +0 -0
- package/Microsoft.AspNetCore.Authentication.dll +0 -0
- package/Microsoft.AspNetCore.Authorization.Policy.dll +0 -0
- package/Microsoft.AspNetCore.Authorization.dll +0 -0
- package/Microsoft.AspNetCore.Components.Authorization.dll +0 -0
- package/Microsoft.AspNetCore.Components.Endpoints.dll +0 -0
- package/Microsoft.AspNetCore.Components.Forms.dll +0 -0
- package/Microsoft.AspNetCore.Components.Server.dll +0 -0
- package/Microsoft.AspNetCore.Components.Web.dll +0 -0
- package/Microsoft.AspNetCore.Components.dll +0 -0
- package/Microsoft.AspNetCore.Connections.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.CookiePolicy.dll +0 -0
- package/Microsoft.AspNetCore.Cors.dll +0 -0
- package/Microsoft.AspNetCore.Cryptography.Internal.dll +0 -0
- package/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll +0 -0
- package/Microsoft.AspNetCore.DataProtection.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.DataProtection.Extensions.dll +0 -0
- package/Microsoft.AspNetCore.DataProtection.dll +0 -0
- package/Microsoft.AspNetCore.Diagnostics.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Diagnostics.HealthChecks.dll +0 -0
- package/Microsoft.AspNetCore.Diagnostics.dll +0 -0
- package/Microsoft.AspNetCore.HostFiltering.dll +0 -0
- package/Microsoft.AspNetCore.Hosting.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Hosting.dll +0 -0
- package/Microsoft.AspNetCore.Html.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Http.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Http.Connections.Common.dll +0 -0
- package/Microsoft.AspNetCore.Http.Connections.dll +0 -0
- package/Microsoft.AspNetCore.Http.Extensions.dll +0 -0
- package/Microsoft.AspNetCore.Http.Features.dll +0 -0
- package/Microsoft.AspNetCore.Http.Results.dll +0 -0
- package/Microsoft.AspNetCore.Http.dll +0 -0
- package/Microsoft.AspNetCore.HttpLogging.dll +0 -0
- package/Microsoft.AspNetCore.HttpOverrides.dll +0 -0
- package/Microsoft.AspNetCore.HttpsPolicy.dll +0 -0
- package/Microsoft.AspNetCore.Identity.dll +0 -0
- package/Microsoft.AspNetCore.Localization.Routing.dll +0 -0
- package/Microsoft.AspNetCore.Localization.dll +0 -0
- package/Microsoft.AspNetCore.Metadata.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.ApiExplorer.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Core.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Cors.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.DataAnnotations.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Formatters.Json.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Formatters.Xml.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Localization.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.Razor.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.RazorPages.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.TagHelpers.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.ViewFeatures.dll +0 -0
- package/Microsoft.AspNetCore.Mvc.dll +0 -0
- package/Microsoft.AspNetCore.OutputCaching.dll +0 -0
- package/Microsoft.AspNetCore.RateLimiting.dll +0 -0
- package/Microsoft.AspNetCore.Razor.Runtime.dll +0 -0
- package/Microsoft.AspNetCore.Razor.dll +0 -0
- package/Microsoft.AspNetCore.RequestDecompression.dll +0 -0
- package/Microsoft.AspNetCore.ResponseCaching.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.ResponseCaching.dll +0 -0
- package/Microsoft.AspNetCore.ResponseCompression.dll +0 -0
- package/Microsoft.AspNetCore.Rewrite.dll +0 -0
- package/Microsoft.AspNetCore.Routing.Abstractions.dll +0 -0
- package/Microsoft.AspNetCore.Routing.dll +0 -0
- package/Microsoft.AspNetCore.Server.HttpSys.dll +0 -0
- package/Microsoft.AspNetCore.Server.IIS.dll +0 -0
- package/Microsoft.AspNetCore.Server.IISIntegration.dll +0 -0
- package/Microsoft.AspNetCore.Server.Kestrel.Core.dll +0 -0
- package/Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll +0 -0
- package/Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll +0 -0
- package/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll +0 -0
- package/Microsoft.AspNetCore.Server.Kestrel.dll +0 -0
- package/Microsoft.AspNetCore.Session.dll +0 -0
- package/Microsoft.AspNetCore.SignalR.Common.dll +0 -0
- package/Microsoft.AspNetCore.SignalR.Core.dll +0 -0
- package/Microsoft.AspNetCore.SignalR.Protocols.Json.dll +0 -0
- package/Microsoft.AspNetCore.SignalR.dll +0 -0
- package/Microsoft.AspNetCore.StaticAssets.dll +0 -0
- package/Microsoft.AspNetCore.StaticFiles.dll +0 -0
- package/Microsoft.AspNetCore.WebSockets.dll +0 -0
- package/Microsoft.AspNetCore.WebUtilities.dll +0 -0
- package/Microsoft.AspNetCore.dll +0 -0
- package/Microsoft.CSharp.dll +0 -0
- package/Microsoft.Extensions.AI.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Caching.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Caching.Memory.dll +0 -0
- package/Microsoft.Extensions.Configuration.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Configuration.Binder.dll +0 -0
- package/Microsoft.Extensions.Configuration.CommandLine.dll +0 -0
- package/Microsoft.Extensions.Configuration.EnvironmentVariables.dll +0 -0
- package/Microsoft.Extensions.Configuration.FileExtensions.dll +0 -0
- package/Microsoft.Extensions.Configuration.Ini.dll +0 -0
- package/Microsoft.Extensions.Configuration.Json.dll +0 -0
- package/Microsoft.Extensions.Configuration.KeyPerFile.dll +0 -0
- package/Microsoft.Extensions.Configuration.UserSecrets.dll +0 -0
- package/Microsoft.Extensions.Configuration.Xml.dll +0 -0
- package/Microsoft.Extensions.Configuration.dll +0 -0
- package/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
- package/Microsoft.Extensions.DependencyInjection.dll +0 -0
- package/Microsoft.Extensions.DependencyModel.dll +0 -0
- package/Microsoft.Extensions.Diagnostics.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Diagnostics.HealthChecks.dll +0 -0
- package/Microsoft.Extensions.Diagnostics.dll +0 -0
- package/Microsoft.Extensions.Features.dll +0 -0
- package/Microsoft.Extensions.FileProviders.Abstractions.dll +0 -0
- package/Microsoft.Extensions.FileProviders.Composite.dll +0 -0
- package/Microsoft.Extensions.FileProviders.Embedded.dll +0 -0
- package/Microsoft.Extensions.FileProviders.Physical.dll +0 -0
- package/Microsoft.Extensions.FileSystemGlobbing.dll +0 -0
- package/Microsoft.Extensions.Hosting.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Hosting.dll +0 -0
- package/Microsoft.Extensions.Http.dll +0 -0
- package/Microsoft.Extensions.Identity.Core.dll +0 -0
- package/Microsoft.Extensions.Identity.Stores.dll +0 -0
- package/Microsoft.Extensions.Localization.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Localization.dll +0 -0
- package/Microsoft.Extensions.Logging.Abstractions.dll +0 -0
- package/Microsoft.Extensions.Logging.Configuration.dll +0 -0
- package/Microsoft.Extensions.Logging.Console.dll +0 -0
- package/Microsoft.Extensions.Logging.Debug.dll +0 -0
- package/Microsoft.Extensions.Logging.EventLog.dll +0 -0
- package/Microsoft.Extensions.Logging.EventSource.dll +0 -0
- package/Microsoft.Extensions.Logging.TraceSource.dll +0 -0
- package/Microsoft.Extensions.Logging.dll +0 -0
- package/Microsoft.Extensions.ObjectPool.dll +0 -0
- package/Microsoft.Extensions.Options.ConfigurationExtensions.dll +0 -0
- package/Microsoft.Extensions.Options.DataAnnotations.dll +0 -0
- package/Microsoft.Extensions.Options.dll +0 -0
- package/Microsoft.Extensions.Primitives.dll +0 -0
- package/Microsoft.Extensions.Validation.dll +0 -0
- package/Microsoft.Extensions.WebEncoders.dll +0 -0
- package/Microsoft.JSInterop.dll +0 -0
- package/Microsoft.Net.Http.Headers.dll +0 -0
- package/Microsoft.VisualBasic.Core.dll +0 -0
- package/Microsoft.VisualBasic.dll +0 -0
- package/Microsoft.Win32.Primitives.dll +0 -0
- package/Microsoft.Win32.Registry.dll +0 -0
- package/ModelContextProtocol.Core.dll +0 -0
- package/ModelContextProtocol.dll +0 -0
- package/Newtonsoft.Json.dll +0 -0
- package/Roastery.dll +0 -0
- package/Roastery.pdb +0 -0
- package/Sample/Templates/alert-Batch Processing Errors.template +35 -0
- package/Sample/Templates/alert-Frontend Errors.template +35 -0
- package/Sample/Templates/alert-Low Stock.template +25 -0
- package/Sample/Templates/alert-Production Errors.template +35 -0
- package/Sample/Templates/dashboard-Database.template +145 -0
- package/Sample/Templates/dashboard-HTTP Requests.template +177 -0
- package/Sample/Templates/dashboard-Orders.template +256 -0
- package/Sample/Templates/dashboard-Overview.template +155 -0
- package/Sample/Templates/dashboard-Production.template +85 -0
- package/Sample/Templates/expressionindex-16.template +5 -0
- package/Sample/Templates/expressionindex-17.template +5 -0
- package/Sample/Templates/retentionpolicy-82.template +9 -0
- package/Sample/Templates/retentionpolicy-84.template +6 -0
- package/Sample/Templates/signal-Bad Request.template +19 -0
- package/Sample/Templates/signal-Batch Processing.template +19 -0
- package/Sample/Templates/signal-Columns.template +19 -0
- package/Sample/Templates/signal-Database.template +19 -0
- package/Sample/Templates/signal-Errors.template +19 -0
- package/Sample/Templates/signal-Exceptions.template +19 -0
- package/Sample/Templates/signal-HTTP Requests.template +19 -0
- package/Sample/Templates/signal-Information.template +19 -0
- package/Sample/Templates/signal-Internal Server Error.template +19 -0
- package/Sample/Templates/signal-Logs.template +19 -0
- package/Sample/Templates/signal-Not Found.template +19 -0
- package/Sample/Templates/signal-Order Abandoned.template +19 -0
- package/Sample/Templates/signal-Order Archived.template +19 -0
- package/Sample/Templates/signal-Order Created.template +19 -0
- package/Sample/Templates/signal-Order Placed.template +19 -0
- package/Sample/Templates/signal-Order Shipped.template +19 -0
- package/Sample/Templates/signal-Roastery Production.template +19 -0
- package/Sample/Templates/signal-Sample Data.template +19 -0
- package/Sample/Templates/signal-Spans.template +19 -0
- package/Sample/Templates/signal-Stock Level Warnings.template +19 -0
- package/Sample/Templates/signal-Success.template +19 -0
- package/Sample/Templates/signal-Warnings.template +19 -0
- package/Sample/Templates/signal-Web Frontend.template +19 -0
- package/Sample/Templates/sqlquery-Available Properties.template +8 -0
- package/Sample/Templates/sqlquery-Count by Hour.template +8 -0
- package/Sample/Templates/sqlquery-Latest as Table.template +8 -0
- package/Sample/Templates/sqlquery-Order Items by Product Size.template +8 -0
- package/Sample/Templates/sqlquery-Route Bindings.template +8 -0
- package/Sample/Templates/sqlquery-Space by Event Type.template +8 -0
- package/Sample/Templates/view-Overview.template +35 -0
- package/Sample/Templates/view-Production.template +21 -0
- package/Sample/Templates/workspace-Seq Caf/303/251 /342/230/225.template" +46 -0
- package/Seq.Api.dll +0 -0
- package/Seq.Apps.dll +0 -0
- package/Seq.Syntax.V2.dll +0 -0
- package/SeqCli.ico +0 -0
- package/Serilog.AspNetCore.dll +0 -0
- package/Serilog.Extensions.Hosting.dll +0 -0
- package/Serilog.Extensions.Logging.dll +0 -0
- package/Serilog.Formatting.Compact.Reader.dll +0 -0
- package/Serilog.Formatting.Compact.dll +0 -0
- package/Serilog.Settings.Configuration.dll +0 -0
- package/Serilog.Sinks.Console.dll +0 -0
- package/Serilog.Sinks.Debug.dll +0 -0
- package/Serilog.Sinks.File.dll +0 -0
- package/Serilog.Sinks.Seq.dll +0 -0
- package/Serilog.dll +0 -0
- package/SerilogTracing.dll +0 -0
- package/Skills/building-seq-plug-in-apps/SKILL.md +540 -0
- package/Skills/seq-search-and-query/SKILL.md +360 -0
- package/Skills/working-with-seq-metrics/SKILL.md +157 -0
- package/Superpower.dll +0 -0
- package/System.AppContext.dll +0 -0
- package/System.Buffers.dll +0 -0
- package/System.Collections.Concurrent.dll +0 -0
- package/System.Collections.Immutable.dll +0 -0
- package/System.Collections.NonGeneric.dll +0 -0
- package/System.Collections.Specialized.dll +0 -0
- package/System.Collections.dll +0 -0
- package/System.ComponentModel.Annotations.dll +0 -0
- package/System.ComponentModel.DataAnnotations.dll +0 -0
- package/System.ComponentModel.EventBasedAsync.dll +0 -0
- package/System.ComponentModel.Primitives.dll +0 -0
- package/System.ComponentModel.TypeConverter.dll +0 -0
- package/System.ComponentModel.dll +0 -0
- package/System.Configuration.dll +0 -0
- package/System.Console.dll +0 -0
- package/System.Core.dll +0 -0
- package/System.Data.Common.dll +0 -0
- package/System.Data.DataSetExtensions.dll +0 -0
- package/System.Data.dll +0 -0
- package/System.Diagnostics.Contracts.dll +0 -0
- package/System.Diagnostics.Debug.dll +0 -0
- package/System.Diagnostics.DiagnosticSource.dll +0 -0
- package/System.Diagnostics.EventLog.dll +0 -0
- package/System.Diagnostics.FileVersionInfo.dll +0 -0
- package/System.Diagnostics.Process.dll +0 -0
- package/System.Diagnostics.StackTrace.dll +0 -0
- package/System.Diagnostics.TextWriterTraceListener.dll +0 -0
- package/System.Diagnostics.Tools.dll +0 -0
- package/System.Diagnostics.TraceSource.dll +0 -0
- package/System.Diagnostics.Tracing.dll +0 -0
- package/System.Drawing.Primitives.dll +0 -0
- package/System.Drawing.dll +0 -0
- package/System.Dynamic.Runtime.dll +0 -0
- package/System.Formats.Asn1.dll +0 -0
- package/System.Formats.Cbor.dll +0 -0
- package/System.Formats.Tar.dll +0 -0
- package/System.Globalization.Calendars.dll +0 -0
- package/System.Globalization.Extensions.dll +0 -0
- package/System.Globalization.dll +0 -0
- package/System.IO.Compression.Brotli.dll +0 -0
- package/System.IO.Compression.FileSystem.dll +0 -0
- package/System.IO.Compression.ZipFile.dll +0 -0
- package/System.IO.Compression.dll +0 -0
- package/System.IO.FileSystem.AccessControl.dll +0 -0
- package/System.IO.FileSystem.DriveInfo.dll +0 -0
- package/System.IO.FileSystem.Primitives.dll +0 -0
- package/System.IO.FileSystem.Watcher.dll +0 -0
- package/System.IO.FileSystem.dll +0 -0
- package/System.IO.IsolatedStorage.dll +0 -0
- package/System.IO.MemoryMappedFiles.dll +0 -0
- package/System.IO.Pipelines.dll +0 -0
- package/System.IO.Pipes.AccessControl.dll +0 -0
- package/System.IO.Pipes.dll +0 -0
- package/System.IO.UnmanagedMemoryStream.dll +0 -0
- package/System.IO.dll +0 -0
- package/System.Linq.AsyncEnumerable.dll +0 -0
- package/System.Linq.Expressions.dll +0 -0
- package/System.Linq.Parallel.dll +0 -0
- package/System.Linq.Queryable.dll +0 -0
- package/System.Linq.dll +0 -0
- package/System.Memory.dll +0 -0
- package/System.Net.Http.Json.dll +0 -0
- package/System.Net.Http.dll +0 -0
- package/System.Net.HttpListener.dll +0 -0
- package/System.Net.Mail.dll +0 -0
- package/System.Net.NameResolution.dll +0 -0
- package/System.Net.NetworkInformation.dll +0 -0
- package/System.Net.Ping.dll +0 -0
- package/System.Net.Primitives.dll +0 -0
- package/System.Net.Quic.dll +0 -0
- package/System.Net.Requests.dll +0 -0
- package/System.Net.Security.dll +0 -0
- package/System.Net.ServerSentEvents.dll +0 -0
- package/System.Net.ServicePoint.dll +0 -0
- package/System.Net.Sockets.dll +0 -0
- package/System.Net.WebClient.dll +0 -0
- package/System.Net.WebHeaderCollection.dll +0 -0
- package/System.Net.WebProxy.dll +0 -0
- package/System.Net.WebSockets.Client.dll +0 -0
- package/System.Net.WebSockets.dll +0 -0
- package/System.Net.dll +0 -0
- package/System.Numerics.Vectors.dll +0 -0
- package/System.Numerics.dll +0 -0
- package/System.ObjectModel.dll +0 -0
- package/System.Private.CoreLib.dll +0 -0
- package/System.Private.DataContractSerialization.dll +0 -0
- package/System.Private.Uri.dll +0 -0
- package/System.Private.Xml.Linq.dll +0 -0
- package/System.Private.Xml.dll +0 -0
- package/System.Reflection.DispatchProxy.dll +0 -0
- package/System.Reflection.Emit.ILGeneration.dll +0 -0
- package/System.Reflection.Emit.Lightweight.dll +0 -0
- package/System.Reflection.Emit.dll +0 -0
- package/System.Reflection.Extensions.dll +0 -0
- package/System.Reflection.Metadata.dll +0 -0
- package/System.Reflection.Primitives.dll +0 -0
- package/System.Reflection.TypeExtensions.dll +0 -0
- package/System.Reflection.dll +0 -0
- package/System.Resources.Reader.dll +0 -0
- package/System.Resources.ResourceManager.dll +0 -0
- package/System.Resources.Writer.dll +0 -0
- package/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- package/System.Runtime.CompilerServices.VisualC.dll +0 -0
- package/System.Runtime.Extensions.dll +0 -0
- package/System.Runtime.Handles.dll +0 -0
- package/System.Runtime.InteropServices.JavaScript.dll +0 -0
- package/System.Runtime.InteropServices.RuntimeInformation.dll +0 -0
- package/System.Runtime.InteropServices.dll +0 -0
- package/System.Runtime.Intrinsics.dll +0 -0
- package/System.Runtime.Loader.dll +0 -0
- package/System.Runtime.Numerics.dll +0 -0
- package/System.Runtime.Serialization.Formatters.dll +0 -0
- package/System.Runtime.Serialization.Json.dll +0 -0
- package/System.Runtime.Serialization.Primitives.dll +0 -0
- package/System.Runtime.Serialization.Xml.dll +0 -0
- package/System.Runtime.Serialization.dll +0 -0
- package/System.Runtime.dll +0 -0
- package/System.Security.AccessControl.dll +0 -0
- package/System.Security.Claims.dll +0 -0
- package/System.Security.Cryptography.Algorithms.dll +0 -0
- package/System.Security.Cryptography.Cng.dll +0 -0
- package/System.Security.Cryptography.Csp.dll +0 -0
- package/System.Security.Cryptography.Encoding.dll +0 -0
- package/System.Security.Cryptography.OpenSsl.dll +0 -0
- package/System.Security.Cryptography.Pkcs.dll +0 -0
- package/System.Security.Cryptography.Primitives.dll +0 -0
- package/System.Security.Cryptography.ProtectedData.dll +0 -0
- package/System.Security.Cryptography.X509Certificates.dll +0 -0
- package/System.Security.Cryptography.Xml.dll +0 -0
- package/System.Security.Cryptography.dll +0 -0
- package/System.Security.Principal.Windows.dll +0 -0
- package/System.Security.Principal.dll +0 -0
- package/System.Security.SecureString.dll +0 -0
- package/System.Security.dll +0 -0
- package/System.ServiceModel.Web.dll +0 -0
- package/System.ServiceProcess.ServiceController.dll +0 -0
- package/System.ServiceProcess.dll +0 -0
- package/System.Text.Encoding.CodePages.dll +0 -0
- package/System.Text.Encoding.Extensions.dll +0 -0
- package/System.Text.Encoding.dll +0 -0
- package/System.Text.Encodings.Web.dll +0 -0
- package/System.Text.Json.dll +0 -0
- package/System.Text.RegularExpressions.dll +0 -0
- package/System.Threading.AccessControl.dll +0 -0
- package/System.Threading.Channels.dll +0 -0
- package/System.Threading.Overlapped.dll +0 -0
- package/System.Threading.RateLimiting.dll +0 -0
- package/System.Threading.Tasks.Dataflow.dll +0 -0
- package/System.Threading.Tasks.Extensions.dll +0 -0
- package/System.Threading.Tasks.Parallel.dll +0 -0
- package/System.Threading.Tasks.dll +0 -0
- package/System.Threading.Thread.dll +0 -0
- package/System.Threading.ThreadPool.dll +0 -0
- package/System.Threading.Timer.dll +0 -0
- package/System.Threading.dll +0 -0
- package/System.Transactions.Local.dll +0 -0
- package/System.Transactions.dll +0 -0
- package/System.ValueTuple.dll +0 -0
- package/System.Web.HttpUtility.dll +0 -0
- package/System.Web.dll +0 -0
- package/System.Windows.dll +0 -0
- package/System.Xml.Linq.dll +0 -0
- package/System.Xml.ReaderWriter.dll +0 -0
- package/System.Xml.Serialization.dll +0 -0
- package/System.Xml.XDocument.dll +0 -0
- package/System.Xml.XPath.XDocument.dll +0 -0
- package/System.Xml.XPath.dll +0 -0
- package/System.Xml.XmlDocument.dll +0 -0
- package/System.Xml.XmlSerializer.dll +0 -0
- package/System.Xml.dll +0 -0
- package/System.dll +0 -0
- package/Tavis.UriTemplates.dll +0 -0
- package/WindowsBase.dll +0 -0
- package/createdump +0 -0
- package/libSystem.Globalization.Native.dylib +0 -0
- package/libSystem.IO.Compression.Native.dylib +0 -0
- package/libSystem.Native.dylib +0 -0
- package/libSystem.Net.Security.Native.dylib +0 -0
- package/libSystem.Security.Cryptography.Native.Apple.dylib +0 -0
- package/libclrgc.dylib +0 -0
- package/libclrgcexp.dylib +0 -0
- package/libclrjit.dylib +0 -0
- package/libcoreclr.dylib +0 -0
- package/libhostfxr.dylib +0 -0
- package/libhostpolicy.dylib +0 -0
- package/libmscordaccore.dylib +0 -0
- package/libmscordbi.dylib +0 -0
- package/mscorlib.dll +0 -0
- package/netstandard.dll +0 -0
- package/package.json +24 -0
- package/seqcli +0 -0
- package/seqcli.deps.json +1838 -0
- package/seqcli.dll +0 -0
- package/seqcli.pdb +0 -0
- package/seqcli.runtimeconfig.json +19 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seq-search-and-query
|
|
3
|
+
description: Search and query logs and spans in Seq. Use when interacting with Seq.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: Datalust and Contributors
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Seq is a storage service for log and trace telemetry. Search Seq to retrieve matching log events and spans. Query Seq to
|
|
10
|
+
compute tabular, aggregate results from log events and spans.
|
|
11
|
+
|
|
12
|
+
Seq's query language is **not SQL** — assuming SQL semantics will produce errors. Do NOT rely on prior knowledge of
|
|
13
|
+
Seq's query language. **Always** use the grammar, rules, and examples in this document as a basis for Seq queries and
|
|
14
|
+
searches.
|
|
15
|
+
|
|
16
|
+
## Starting a Diagnostic Session
|
|
17
|
+
|
|
18
|
+
Being "confidently wrong" is the most common and worst failure mode when working with diagnostic data. EVERY diagnostic
|
|
19
|
+
session MUST begin with the following steps:
|
|
20
|
+
|
|
21
|
+
1. Check for relevant signals. Many event filtering problems have already been solved and the resulting filters saved as efficiently indexed signals.
|
|
22
|
+
2. Retrieve a sample of relevant events. Use signals identified in (1) where appropriate, event search and query supports them.
|
|
23
|
+
3. Proactively confirm the schema of the search results using appropriate tools.
|
|
24
|
+
4. Inspect a subset of relevant events in full.
|
|
25
|
+
5. Determine how the correctness of any conclusions can be verified using real diagnostic data.
|
|
26
|
+
|
|
27
|
+
DO NOT skip steps just because early results suggest a quicker path to a solution: this is the path to being confidently wrong!
|
|
28
|
+
|
|
29
|
+
## Event Data Model
|
|
30
|
+
|
|
31
|
+
All events stored in Seq use the same data model. Spans are distinguished from log events by the presence of the
|
|
32
|
+
`@Start` property. The following built-in properties are supported.
|
|
33
|
+
|
|
34
|
+
| Built in property name | Type | Description |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| `@Arrived` | `number` | An integer indicating the order in which the event arrived at the Seq server relative to other events in the same batch. |
|
|
37
|
+
| `@Data` | `object` | A compact internal representation of the event as a single structured object. High runtime cost, should be avoided when possible. |
|
|
38
|
+
| `@Elapsed` | `number?` | The elapsed duration of a span, expressed in 100 nanosecond ticks. In the same domain as Seq's duration literals such as `1s`, `23ms`, or `3d`. Only present on spans, not present on log events. |
|
|
39
|
+
| `@EventType` | `number` | A numeric hash of the message template that was used to generate the event. The message template itself is in the `@MessageTemplate` property. |
|
|
40
|
+
| `@Exception` | `string?` | The exception associated with the event if any, as a string. This normally incorporates the exception type, message, and stack trace. |
|
|
41
|
+
| `@Id` | `string` | The event's unique id in Seq. |
|
|
42
|
+
| `@Level` | `string` | The severity of a log event, or completion status of a span. Values are source-dependent, so for example `'Error'`, `'ERROR'`, and `'err'` would all be typical values. |
|
|
43
|
+
| `@Message` | `string` | Human-readable text associated with the event. Often the result of substituting `@Properties` values into `@MessageTemplate`. For spans, this property carries the span name. |
|
|
44
|
+
| `@MessageTemplate` | `string` | A message template, following the `messagetemplates.org` syntax. Message templates collectively identify events generated from the same line of logging/tracing code. |
|
|
45
|
+
| `@ParentId` | `string?` | The `@SpanId` of the parent of a given span, if any. The parent span will always belong to the same trace, that is, share a `@TraceId` value. Only present on spans, not log events. |
|
|
46
|
+
| `@Properties` | `object?` | An object containing the user-defined properties of a log event or span. Properties with names that are valid C-style identifiers can be accessed implicitly, so `RequestPath` is syntactically equivalent to `@Properties['RequestPath']`. Properties generally conform to naming conventions used throughout the Seq server - sometimes simple PascalCase names, and at other times using the OpenTelemetry semantic conventions. See also `@Resource` and `@Scope`. |
|
|
47
|
+
| `@Resource` | `object?` | For an OpenTelemetry log event or span, the properties associated with the OpenTelemetry resource. These may follow the OTel semantic conventions, but may also be domain-specific or user-defined. |
|
|
48
|
+
| `@Scope` | `object?` | For an OpenTelemetry log event or span, the properties associated with the OpenTelemetry scope. These may match definitions in the OTel semantic conventions, but may also be domain-specific or user-defined. |
|
|
49
|
+
| `@SpanId` | `string?` | The W3C span id that uniquely identifies a span within a trace. Log events recorded during the span carry the same `@SpanId` value as the span itself. |
|
|
50
|
+
| `@SpanKind` | `string?` | The OpenTelemetry span kind. Only present on spans, not log events. |
|
|
51
|
+
| `@Start` | `number?` | The time at which the span started. `@Timestamp` minus `@Start` is the `@Elapsed` time of the span. In the same units as Seq's duration literal syntax. |
|
|
52
|
+
| `@Timestamp` | `number` | The time at which an event was recorded (completion time, for spans). Carried on all log events and spans. In the same units as Seq's duration literal syntax. |
|
|
53
|
+
| `@TraceId` | `string?` | The W3C trace id that uniquely identifies a trace. All spans and log events within a trace carry the same trace id value. |
|
|
54
|
+
|
|
55
|
+
> Tip: if searching or querying with `seqcli`, pass `--native` to show results in round-trippable, agent-friendly syntax. Consider `--json` instead for programmatic scenarios, but take care: in JSON output mode, built-in property names are abbreviated.
|
|
56
|
+
|
|
57
|
+
## Type System
|
|
58
|
+
|
|
59
|
+
Stored data and intermediate values in expression evaluation are typed dynamically. Values are always one of the following types.
|
|
60
|
+
|
|
61
|
+
| Type name | Description | Example literals |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| **null** | The atom `null`. Null is a value in Seq's type system. | `null` |
|
|
64
|
+
| **boolean** | The atoms `true` and `false`. | `true`, `false` |
|
|
65
|
+
| **number** | Decimal numbers with the range and precision of .NET's `decimal` type. | `0`, `12.34`, `56ms`, `DateTime('2026-05-29T10:56:01.43278Z')`, `0xa1b234ff` |
|
|
66
|
+
| **array** | An ordered array of values. | `[]`, `[17, null, {a: 'test'}]` |
|
|
67
|
+
| **object** | An unordered set of name/value pairs. | `{}`, `{a: 'test', 'b c': 17, d: []}` |
|
|
68
|
+
|
|
69
|
+
In expression evaluation, Seq does not perform any type coercion.
|
|
70
|
+
|
|
71
|
+
The results of functions and operators that receive invalid arguments are undefined, which is the absence of a value
|
|
72
|
+
(_undefined_ has the same "poison" semantics as `NULL` in standard SQL).
|
|
73
|
+
|
|
74
|
+
Type notation in this document column uses the suffix `?` on a type name to indicate values that may be undefined.
|
|
75
|
+
The synthetic type name `any` is used as an alias for `null | boolean | number | array | object`.
|
|
76
|
+
|
|
77
|
+
## Scalar Functions and Operators
|
|
78
|
+
|
|
79
|
+
These built-in functions and operators work with individual values. See Aggregate Functions for information on functions like `count()` and `distinct()` that work with sets of values.
|
|
80
|
+
|
|
81
|
+
| Function signature | Description |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `Arrived(eventId: string): number?` | Evaluates to the arrival order encoded in `eventId`. The arrival order is a hint that preserves the order of events from the same source that have the same timestamp. |
|
|
84
|
+
| `Bucket(n: number, err: number?): number` | Reduce precision of `n` by computing the midpoint of the closest logarithmic bucket. The optional `err` parameter specifies the maximum permissible error fraction. |
|
|
85
|
+
| `Coalesce(arg0: any?, arg1: any?, ...): any?` | Evaluates to the first defined, non-`null` argument. If no argument meets this requirement, `Coalesce` returns the value of its final argument. |
|
|
86
|
+
| `Concat(str0: string, str1: string, ...): string` | Concatenate all string arguments. No type coercion is performed. |
|
|
87
|
+
| `Contains(text: string, substring: string): boolean` | Evaluates to `true` if text contains substring. Supports the `ci` modifier. |
|
|
88
|
+
| `DatePart(datetime: number, part: string, offset: number): number?` | Compute the value of `part` for the date/time `datetime` at time zone offset `offset`. Both `datetime` and `offset` are 100-nanosecond tick values. If `part` is not a recognized part name, the result is undefined. See the documentation section on date and time handling for more information. |
|
|
89
|
+
| `DateTime(str: string): number?` | Attempt to parse the date/time value encoded in the string `str`. If the value cannot be parsed as a date/time, the result is undefined. |
|
|
90
|
+
| `ElementAt(collection: array \| object, index: number \| string): any?` | Access the element of the array or object `collection` at the index or key `index`. Supports the `ci` modifier. |
|
|
91
|
+
| `EndsWith(text: string, substring: string): boolean` | Evaluates to `true` if `text` ends with `substring`. Supports the `ci` modifier. |
|
|
92
|
+
| `Every(collection: array \| object, predicate): boolean` | Evaluates to `true` if the function predicate evaluates to `true` for all elements of the array or object `collection`. |
|
|
93
|
+
| `FromJson(json: string): any?` | Parse JSON, producing a value of the corresponding Seq native type. If `json` is not valid JSON, the result is undefined. High runtime cost, should be avoided when possible. |
|
|
94
|
+
| `Has(arg: any?): boolean` | Evaluates to `true` if `arg` is defined. Otherwise, if `arg` is undefined, the result is `false`. |
|
|
95
|
+
| `IndexOf(text: string, substring: string): number` | Return the zero-based index of the first occurrence of `substring` in `text`. If substring is not present in text, the result is `-1`. Supports the `ci` modifier. |
|
|
96
|
+
| `Keys(obj: object): array` | Evaluates to an array containing the keys of the object `obj`. |
|
|
97
|
+
| `LastIndexOf(text: string, substring: string): number` | Return the zero-based index of the last occurrence of `substring` in `text`. If substring is not present in text, the result is `-1`. Supports the `ci` modifier. |
|
|
98
|
+
| `Length(arg: string \| array): number` | Evaluates to the length of the string or array `arg`. |
|
|
99
|
+
| `Now(): number` | Evaluates to the current time, as 100-nanosecond ticks since 00:00:00 on 0001-01-01. |
|
|
100
|
+
| `OffsetIn(timezone: string, instant: number): number?` | Determine the offset from UTC in time zone `timezone` at instant `instant`. The time zone name must be an IANA time zone name. The instant value is specified in 100-nanosecond ticks. See the documentation section on date and time handling for more information. |
|
|
101
|
+
| `Replace(text: string, substring: string, replacement: string): string` | Replace all occurrences of `substring` in `text` with `replacement`. Accepts a `/regular expression/` in place of `substring`, in which case replacement may use `$0` to refer to the match, `$1` the first capturing group, and so on. Regular expression replacements use `$$` to escape a single dollar sign. Supports the `ci` modifier. |
|
|
102
|
+
| `Round(value: number, places: number): number` | Round `value` to specified number of decimal places. Midpoint values (0.5) are rounded up. |
|
|
103
|
+
| `Some(collection: array \| object, predicate): boolean` | Evaluates to `true` if the function predicate evaluates to `true` for any element of the array or object `collection`. |
|
|
104
|
+
| `StartsWith(text: string, substring: string): boolean` | Evaluates to `true` if text starts with substring. Supports the `ci` modifier. |
|
|
105
|
+
| `Substring(str: string, start: number, length: number?): string?` | Evaluates to the substring of string `str` from the zero-based index `start`, of `length` characters. If `length` is not specified, or exceeds the number of characters remaining after `start`, the result is the remainder of the string. The result is undefined if `start` is out of bounds, or if either `start` or `length` is negative. |
|
|
106
|
+
| `TimeOfDay(datetime: number, offsetHours: number): number` | Compute the time of day of the date/time `datetime` in the time zone offset `offsetHours`. |
|
|
107
|
+
| `TimeSpan(str: string): number?` | Attempt to parse the `d.HH:mm:ss.f` formatted time value encoded in the string `str`. If the value cannot be parsed as a time, the result is undefined. |
|
|
108
|
+
| `ToEventType(str: string): any` | Compute the event type that Seq automatically assigns to `@EventType` from the message template `str`. |
|
|
109
|
+
| `ToHexString(num: number): string` | Format `num` as a hexadecimal string, including leading `0x`. Decimal digits are discarded. |
|
|
110
|
+
| `ToIsoString(datetime: number, offset: number?): string` | Format `datetime` as an ISO-8601 string, with an optional time zone offset. Both the datetime and offset arguments are interpreted as 100-nanosecond ticks since the epoch. The offset argument defaults to 0, or UTC. Output is given with the UTC or full time zone designator, i.e. Z or ±hh:mm. |
|
|
111
|
+
| `ToJson(arg: any): string` | Convert the value `arg` to JSON. Can be used to convert a value (e.g. number) to a string. |
|
|
112
|
+
| `ToLower(str: string): string` | Convert string `str` to lowercase. To compare strings in a case-insensitive manner, use the equality operator and `ci` modifier instead. |
|
|
113
|
+
| `ToNumber(str: string): number?` | Parse string `str` as a number. |
|
|
114
|
+
| `TotalMilliseconds(timespan: number \| string): number?` | Evaluates to the total number of milliseconds represented by the time span `timespan`. If `timespan` is a number, it will be interpreted as containing 100-nanosecond ticks. If `timespan` is a string, it will be parsed in the same manner as performed by `TimeSpan()`. |
|
|
115
|
+
| `ToTimeString(timespan: number): string` | Format `timespan` as an `d.HH:mm:ss.f` string. The `timespan` argument is interpreted as 100-nanosecond ticks. The inverse of TimeSpan. |
|
|
116
|
+
| `ToUpper(str: string): string` | Convert string `str` to uppercase. To compare strings in a case-insensitive manner, use the equality operator and `ci` modifier instead. |
|
|
117
|
+
| `TypeOf(arg: any?): string` | Returns the type of value, either `'object'`, `'array'`, `'string'`, `'number'`, `'boolean'`, `'null'`, or `'undefined'`. |
|
|
118
|
+
| `Values(obj: object): array` | Evaluates to an array containing the values of the members of object `obj`. |
|
|
119
|
+
| Operator `+`, `-`, `*`, `/` | Arithmetic operators. If any argument is non-numeric, or if a divisor is zero, the result is undefined. |
|
|
120
|
+
| Operator `-` (prefix) | Negate a number. If any argument is non-numeric, the result is undefined. |
|
|
121
|
+
| Operator `%` | Remainder after dividing the left-hand operand by the right. If the right-hand operand is zero, the result is undefined. If any argument is non-numeric, the result is undefined. |
|
|
122
|
+
| Operator `^` | Raise a number to the specified power. If any argument is non-numeric, the result is undefined. |
|
|
123
|
+
| Operator `=` | Compare two values, returning `true` if the values are equal, and `false` otherwise. Structural comparison is supported, so the values may be of any type including objects and arrays. If the right-hand operand is a `/regular expression/`, the result is `true` if the left-hand operand is a string that is an exact match for the regular expression. If any argument is undefined, the result is undefined. Supports the `ci` modifier. |
|
|
124
|
+
| Operator `<>` | Compare two values, returning `true` if the values are unequal, and `false` otherwise. Structural comparison is supported, so the values may be of any type including objects and arrays. If any argument is undefined, the result is undefined. Supports the `ci` modifier. |
|
|
125
|
+
| Operator `<`, `<=`, `>`, `>=` | Compare two values. If any argument is undefined, the result is undefined. |
|
|
126
|
+
| Operator `and` | The result of `a and b` is `true` if and only if both `a` and `b` are `true`; the result is otherwise `false`. Type coercion is not performed. If any argument is non-Boolean, the result is undefined. |
|
|
127
|
+
| Operator `not` (prefix) | Evaluates to `true` if the operand is `false`, or if the operand is undefined. Type coercion is not performed. If any argument is non-Boolean, the result is undefined. |
|
|
128
|
+
| Operator `or` | The result of `a or b` is `true` if either `a` or `b` is `true`; otherwise the result is `false`. Type coercion is not performed. If any argument is non-Boolean, the result is undefined. |
|
|
129
|
+
| Operator `like` | Determine if the left-hand operand is a string matching the right-hand pattern. The pattern can contain `%` and `?` wildcards for zero-or-many, or zero-or-one characters. `%` and `?` are escaped by doubling. The inverse `not like` is also supported. |
|
|
130
|
+
| Operator `is null` | Determine if the left-hand operand is `null` or undefined. The result is always a defined `boolean`. The inverse `is not null` is also supported. |
|
|
131
|
+
| Operator `in` | Determine if the left-hand operand is an element of the right-hand array. |
|
|
132
|
+
|
|
133
|
+
## Aggregate Functions
|
|
134
|
+
|
|
135
|
+
`select` queries have access to the following aggregate functions.
|
|
136
|
+
|
|
137
|
+
| Aggregate function signature | Description | Example |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| `all(expr: boolean): boolean` | Return `true` if `expr` is `true` for all events in the stream. | `all(@Level = 'Error')` |
|
|
140
|
+
| `any(expr: boolean): boolean` | Return `true` if `expr` is `true` for any event in the stream. | `any(@Level = 'Error')` |
|
|
141
|
+
| `bottom(expr: any, n: number): rowset` | Compute the last `n` values that appear for `expr`. The `bottom` function cannot appear with any other aggregate functions. The default ordering for `select` queries on `stream` is time-ascending. See also: `top()`, `first()`, `last()`. | `bottom(StatusCode, 5)` |
|
|
142
|
+
| `count(property: any): number` | Computes the number of events that have a non-`null` value for `property`. The special property name `*` can be used to count all events. | `count(*)` |
|
|
143
|
+
| `distinct(expr: any): rowset` | Computes the set of distinct values for `expr`. The `distinct` function cannot appear with any other aggregate functions. `distinct()` and `count()` can be combined to count distinct values without returning them all. | `distinct(ExceptionType)` |
|
|
144
|
+
| `first(expr: any): any` | Returns the value of `expr` applied to the first events in the target range. | `first(Elapsed)` |
|
|
145
|
+
| `last(expr: any): any` | Returns the value of `expr` applied to the last events in the target range. | `last(Elapsed)` |
|
|
146
|
+
| `interval(): number` | In a query that groups by time, the duration of each time slice. | `count(*) / (interval() / 1d)` |
|
|
147
|
+
| `min(expr: number): number` | Computes the smallest value for `expr`. | `min(Elapsed / 1000)` |
|
|
148
|
+
| `max(expr: number): number` | Computes the largest value for `expr`. | `max(Elapsed / 1000)` |
|
|
149
|
+
| `mean(expr: number): number` | Computes the arithmetic mean (average) of `expr`, i.e. `sum(expr) / count(expr)`. Events where the expression is `null` or not numeric are ignored and do not contribute to the final result. | `mean(ItemCount)` |
|
|
150
|
+
| `percentile(expr: number, p: number [, err: number?]): number` | Given a percentage `p`, calculates the value of `expr` at or below which `p` percent of the results fall. The optional `err` parameter specifies the maximum permissible error fraction. Higher error values reduce compute and memory resource consumption. | `percentile(ResponseTime, 95 , 0.01)` |
|
|
151
|
+
| `phist(expr: number, count: number, p: number): number` | Bucketed (histogram) percentile. | |
|
|
152
|
+
| `sum(expr: number): number` | Calculates the sum of `expr`. Non-numeric values are ignored. | `sum(ItemsOrdered)` |
|
|
153
|
+
| `top(expr: any, n: number): rowset` | Select the first `n` values of `expr`. The `top` function cannot appear with any other aggregate functions. | `top(StatusCode, 5)` |
|
|
154
|
+
|
|
155
|
+
## Base Grammar
|
|
156
|
+
|
|
157
|
+
```ebnf
|
|
158
|
+
identifier = ( letter | '_' ) , { letter | digit | '_' } ;
|
|
159
|
+
built_in_identifier = '@' , ( letter | digit | '_' ) , { letter | digit | '_' } ;
|
|
160
|
+
variable = '$' , ( letter | digit | '_' ) , { letter | digit | '_' } ;
|
|
161
|
+
letter = ? any Unicode letter ? ;
|
|
162
|
+
digit = ? any Unicode digit ? ;
|
|
163
|
+
string_literal = "'" , { string_char } , "'" ;
|
|
164
|
+
string_char = "''" | ? any character except single quote ? ;
|
|
165
|
+
number = natural , [ '.' , natural ] ;
|
|
166
|
+
hex_number = '0x' , hex_digit , { hex_digit } ;
|
|
167
|
+
natural = digit , { digit } ;
|
|
168
|
+
hex_digit = digit | 'a' | 'b' | 'c' | 'd' | 'e' | 'f'
|
|
169
|
+
| 'A' | 'B' | 'C' | 'D' | 'E' | 'F' ;
|
|
170
|
+
duration = { natural , time_unit }- ;
|
|
171
|
+
time_unit = 'd' | 'h' | 'ms' | 'm' | 'us' | 'μs' | 'ns' | 's' ;
|
|
172
|
+
regular_expression = '/' , { regex_char } , '/' ;
|
|
173
|
+
regex_char = '\/' | ? any character except '/' ? ;
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Expression Grammar
|
|
177
|
+
|
|
178
|
+
```ebnf
|
|
179
|
+
Expr = Disjunction ;
|
|
180
|
+
Disjunction = Conjunction , { 'or' , Conjunction } ;
|
|
181
|
+
Conjunction = Comparison , { 'and' , Comparison } ;
|
|
182
|
+
Comparison = Comparand , { comparison_op , Comparand , [ 'ci' ] } ;
|
|
183
|
+
comparison_op = 'not' , 'like'
|
|
184
|
+
| 'like'
|
|
185
|
+
| 'not' , 'in'
|
|
186
|
+
| 'in'
|
|
187
|
+
| '<=' | '<>' | '<'
|
|
188
|
+
| '>=' | '>'
|
|
189
|
+
| '=' ;
|
|
190
|
+
Comparand = Term , { ( '+' | '-' ) , Term } ;
|
|
191
|
+
Term = InnerTerm , { ( '*' | '/' | '%' ) , InnerTerm } ;
|
|
192
|
+
InnerTerm = Operand , { '^' , Operand } ;
|
|
193
|
+
|
|
194
|
+
Operand = ( unary_op , Operand | Path ) , [ 'is' , null_test ] ;
|
|
195
|
+
unary_op = '-' | 'not' ;
|
|
196
|
+
null_test = 'null' | 'not' , 'null' ;
|
|
197
|
+
Path = Factor , { path_step } ;
|
|
198
|
+
path_step = '.' , identifier
|
|
199
|
+
| '[' , ( wildcard | Expr ) , ']' ;
|
|
200
|
+
wildcard = '?' | '*' ;
|
|
201
|
+
Factor = '(' , Expr , ')'
|
|
202
|
+
| Item ;
|
|
203
|
+
Item = Property
|
|
204
|
+
| Literal
|
|
205
|
+
| Function
|
|
206
|
+
| ArrayLiteral
|
|
207
|
+
| ObjectLiteral
|
|
208
|
+
| Conditional
|
|
209
|
+
| Block
|
|
210
|
+
| Lambda
|
|
211
|
+
| Variable ;
|
|
212
|
+
Property = built_in_identifier
|
|
213
|
+
| identifier ; (* when not followed by '(' *)
|
|
214
|
+
Literal = string_literal
|
|
215
|
+
| number
|
|
216
|
+
| hex_number
|
|
217
|
+
| duration
|
|
218
|
+
| regular_expression
|
|
219
|
+
| 'true'
|
|
220
|
+
| 'false'
|
|
221
|
+
| 'null' ;
|
|
222
|
+
Function = function_name , '(' , arg_list , ')' , [ 'ci' ] ;
|
|
223
|
+
function_name = identifier
|
|
224
|
+
| 'and' | 'not' | 'or' ;
|
|
225
|
+
arg_list = '*' (* only valid for count(*) *)
|
|
226
|
+
| [ Expr , { ',' , Expr } ] ;
|
|
227
|
+
ArrayLiteral = '[' , [ Expr , { ',' , Expr } ] , ']' ;
|
|
228
|
+
ObjectLiteral = '{' , [ ObjectMember , { ',' , ObjectMember } ] , '}' ;
|
|
229
|
+
ObjectMember = ( identifier | string_literal ) , ':' , Expr ;
|
|
230
|
+
Conditional = 'if' , Expr , 'then' , Expr , 'else' , Expr ;
|
|
231
|
+
Block = 'let' , '|' , Binding , { ',' , Binding } , '|' , Expr ;
|
|
232
|
+
Binding = identifier , ':' , Expr ;
|
|
233
|
+
Lambda = '|' , [ identifier , { ',' , identifier } ] , '|' , Expr ;
|
|
234
|
+
Variable = variable ;
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Query Grammar
|
|
238
|
+
|
|
239
|
+
```ebnf
|
|
240
|
+
Query = [ ExplainClause ]
|
|
241
|
+
SelectClause
|
|
242
|
+
[ IntoClause ]
|
|
243
|
+
[ FromClause ]
|
|
244
|
+
[ WhereClause ]
|
|
245
|
+
[ GroupByClause ]
|
|
246
|
+
[ HavingClause ]
|
|
247
|
+
[ OrderByClause ]
|
|
248
|
+
[ LimitClause ]
|
|
249
|
+
[ ForClause ] ;
|
|
250
|
+
ExplainClause = 'explain' , [ 'analyze' | 'lower' ] ;
|
|
251
|
+
SelectClause = 'select' , SelectColumn , { ',' , SelectColumn } ;
|
|
252
|
+
SelectColumn = '*'
|
|
253
|
+
| Expr , [ 'as' , identifier ] ;
|
|
254
|
+
IntoClause = 'into' , variable ;
|
|
255
|
+
FromClause = 'from' , source , { LateralJoin } ;
|
|
256
|
+
source = 'stream' | 'series' ;
|
|
257
|
+
LateralJoin = 'lateral' , 'unnest' , '(' , Expr , ')' , 'as' , identifier ;
|
|
258
|
+
WhereClause = 'where' , Expr ;
|
|
259
|
+
GroupByClause = 'group' , 'by' , Grouping , { ',' , Grouping } ;
|
|
260
|
+
Grouping = TimeGrouping
|
|
261
|
+
| Expr , [ 'ci' ] , [ 'as' , identifier ] ;
|
|
262
|
+
TimeGrouping = 'time' , '(' , duration , ')' ;
|
|
263
|
+
HavingClause = 'having' , Expr ;
|
|
264
|
+
OrderByClause = 'order' , 'by' , Ordering , { ',' , Ordering } ;
|
|
265
|
+
Ordering = TimeOrdering
|
|
266
|
+
| identifier , [ 'ci' ] , [ 'asc' | 'desc' ] ; (* identifier must be a selected column or group key alias *)
|
|
267
|
+
TimeOrdering = 'time' ;
|
|
268
|
+
LimitClause = 'limit' , natural ;
|
|
269
|
+
ForClause = 'for' , ForOption , { ',' , ForOption } ;
|
|
270
|
+
ForOption = identifier , [ '(' , [ Expr , { ',' , Expr } ] , ')' ] ;
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Keywords are case-insensitive.
|
|
274
|
+
|
|
275
|
+
## Example Expressions
|
|
276
|
+
|
|
277
|
+
| Example | Purpose |
|
|
278
|
+
|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
|
|
279
|
+
| `@Timestamp >= Now() - 10m` | Match events that occurred in the last ten minutes. |
|
|
280
|
+
| `@TraceId = '0af7651916cd43dd8448eb211c80319c'` | Match all events (both spans and log events) belonging to the given trace. |
|
|
281
|
+
| `Has(@Start)` | Match all spans (excludes log events). |
|
|
282
|
+
| `@Message like '%overflow%' ci or @Exception like '%overflow%' ci` | Given a piece of text, find events with that text in their message or exception/stack trace, using case-insensitive comparisons. |
|
|
283
|
+
| `Items[?] = 'coffee'` | Wildcard "any" - check if element appears in collection. |
|
|
284
|
+
| `ToIsoString(@Timestamp)` | Render a numeric timestamp as ISO-8601. |
|
|
285
|
+
| `ToTimeString(@Elapsed)` | Render a numeric duration value as a human-readable time string. |
|
|
286
|
+
| `@Resource.service.name = 'unknown_service'` | Match events from a specific service (OpenTelemetry semantic convention) |
|
|
287
|
+
| `@TraceId = '...' and @SpanId = '...' and Has(@Start)` | Retrieve a specific trace span using a search expression |
|
|
288
|
+
| `@Level like 'err%' ci` | Perform a case-insensitive prefix search |
|
|
289
|
+
|
|
290
|
+
## Query Example
|
|
291
|
+
|
|
292
|
+
Grouped query with ordering:
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
select count(*)
|
|
296
|
+
from stream
|
|
297
|
+
group by @Resource.service.name as service
|
|
298
|
+
order by service
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Tracing Tactics
|
|
302
|
+
|
|
303
|
+
* Find traces by searching for their included spans.
|
|
304
|
+
* To reconstruct a trace as a call tree, use the `seq_load_trace` MCP tool, or run `seqcli trace -i <traceid>`.
|
|
305
|
+
* Project additional Seq expressions per span with `columns` (CLI: repeated `--column`), for example
|
|
306
|
+
`@Resource.service.name` or `@SpanKind`; values appear in each node's `columns` object, keyed by expression.
|
|
307
|
+
* On large traces, pass `span_id` (CLI: `--span-id`) to retrieve only the subtree rooted at one span.
|
|
308
|
+
* If `complete` is `false`, the trace was truncated at the retrieval limit.
|
|
309
|
+
* Log events recorded during a span are not included by `seq_load_trace`; find them by searching with
|
|
310
|
+
`@TraceId = '...' and @SpanId = '...' and not Has(@Start)` (CLI: pass `--logs`).
|
|
311
|
+
* To see all properties of a single span, use the "retrieve a specific trace span" search recipe above.
|
|
312
|
+
|
|
313
|
+
Rank services by span latency over a window:
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
select
|
|
317
|
+
count(*) as spans,
|
|
318
|
+
Round(TotalMilliseconds(percentile(@Elapsed, 95)), 2) as p95_ms,
|
|
319
|
+
Round(TotalMilliseconds(max(@Elapsed)), 2) as max_ms
|
|
320
|
+
from stream
|
|
321
|
+
where @Timestamp >= now() - 30m and Has(@Start)
|
|
322
|
+
group by @Resource.service.name as service -- group key: alias it, do NOT put it in the select list
|
|
323
|
+
having spans > 50 -- filter groups by the select alias, NOT by count(*) directly
|
|
324
|
+
order by p95_ms desc -- order by a selected aggregate's alias
|
|
325
|
+
limit 100
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## User-Defined Property Schema
|
|
329
|
+
|
|
330
|
+
Seq servers are compatible with a vast array of data sources. They may use a mix of OpenTelemetry and
|
|
331
|
+
framework/ecosystem-specific property names, and may do so inconsistently.
|
|
332
|
+
|
|
333
|
+
When available, **always use the MCP schema tool** to inspect the actual properties appearing on search results. In
|
|
334
|
+
particular, don't skip schema checks early in investigations just because you've seen a few events. Events are
|
|
335
|
+
inconsistent! Use the schema tool at least once just to be safe.
|
|
336
|
+
|
|
337
|
+
## Gotchas
|
|
338
|
+
|
|
339
|
+
- Group keys are automatically included in result rowsets and **must not** be explicitly included in the `select` list.
|
|
340
|
+
- To order by group keys, apply an alias with `group by <expr> as <alias>` and use `order by <alias>`. Never add the group key to the `select` list, this will fail.
|
|
341
|
+
- OpenTelemetry dotted property names correspond to property accessor paths in Seq, so `@Resource.service.name` and `http.response.status_code` are written exactly like this.
|
|
342
|
+
- **Never** put a dotted OTel name inside `[...]`. `@Resource['a.b.c']` is a single literal key (almost always undefined); use `@Resource.a.b.c` for path navigation.
|
|
343
|
+
- Seq expression literals are not JSON, take care to use the Seq expression syntax when formatting literal values.
|
|
344
|
+
- Seq queries are not SQL. Don't expect standard SQL syntax, operators, or semantics to apply, always use the grammar and built-ins described above.
|
|
345
|
+
- Seq searches work backwards through the event stream and always return results in reverse-chronological order, from **most recent** to least recent.
|
|
346
|
+
- Data in Seq servers doesn't always use OpenTelemetry semantic conventions. When searching or querying, only use property names from the built-ins described above, that appear on search results, or that are returned from the schema tool.
|
|
347
|
+
- Bare identifiers like `SomeName` are synonymous with `@Properties['SomeName']`. The latter form allows irregular names to be used.
|
|
348
|
+
- The only escape sequence allowed and required in Seq strings is a doubled single quote - `''` - which evaluates to an embedded literal single quote. Backslash escaping is not recognized.
|
|
349
|
+
- `@Timestamp`, `@Start`, and `@Elapsed` are internally represented as .NET `DateTime` ticks (100 ns resolution) in order to support consistent timestamp/duration math. Comparing these properties with strings will fail: use duration literals for durations, and the `DateTime` function to convert from ISO-8601 strings.
|
|
350
|
+
- Although Seq's types resemble those from JavaScript, Seq does not support JavaScript operators and does not use JavaScript's system of comparisons.
|
|
351
|
+
- The expression `null = null` is `true` in Seq's type system; `null` is just a regular value.
|
|
352
|
+
- Timestamp bounds with inclusive starts and exclusive ends are the most efficient for Seq to work with.
|
|
353
|
+
- Regular expression evaluation is extremely expensive, avoid these as much as possible.
|
|
354
|
+
- Queries without `from stream` or `from series` are scalar (can't project out fields or compute aggregations).
|
|
355
|
+
- Searches and queries should always constrain results using `@Timestamp`, `@TraceId`, or `@Id`.
|
|
356
|
+
- `group by time(..)` requires an inclusive lower time bound on `@Timestamp`.
|
|
357
|
+
- Queries impose a default limit of 1024 rows, which can be changed with the `limit` clause. Set smaller limits to conserve resources when speculatively exploring.
|
|
358
|
+
- Use `ToIsoString()` and `ToTimeString()` to make timestamps or durations (even computed ones) readable. If you forget, you can convert individual values cheaply with a scalar query like `ToIsoString(12345)`.
|
|
359
|
+
- When grouping by `time(..)`, the time ordering leaves of the interval - just `order by time`, the interval isn't re-specified.
|
|
360
|
+
- All function calls and operators are case-sensitive unless the `ci` modifier is appended.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: working-with-seq-metrics
|
|
3
|
+
description: Query metrics stored in Seq. Use this when monitoring data or diagnostic metric information is required.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: Datalust and Contributors
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Seq stores OpenTelemetry metric samples in the `series` data source, which is a columnar data store.
|
|
10
|
+
|
|
11
|
+
Metrics are accessed **strictly** using the following workflow:
|
|
12
|
+
|
|
13
|
+
1. Search for metric definitions
|
|
14
|
+
2. Note the _kind_ of any relevant metrics
|
|
15
|
+
3. List the dimensions that apply to the metric
|
|
16
|
+
4. Optionally, list the values present in dimensions of interest
|
|
17
|
+
5. Run aggregate queries on metric samples using metric names, kinds, and dimensions discovered in the previous steps
|
|
18
|
+
|
|
19
|
+
**NEVER** query the `series` data source for metric definitions directly. **ALWAYS** use the dedicated definition search tools instead.
|
|
20
|
+
|
|
21
|
+
**NEVER** query the `series` data source directly for available dimensions. **ALWAYS** use the dedicated dimension listing tools instead.
|
|
22
|
+
|
|
23
|
+
**NEVER** list dimension values using the `distinct` aggregation. **ALWAYS** use the dedicated dimension value listing tools instead.
|
|
24
|
+
|
|
25
|
+
**NEVER** evaluate projection queries against the `series` data source. This risks impacting the performance of Seq for other
|
|
26
|
+
users and workloads.
|
|
27
|
+
|
|
28
|
+
## Searching for Metric Definitions
|
|
29
|
+
|
|
30
|
+
Metric samples carry an `@Definitions` object where metric names are keys into the object. Under each metric name key,
|
|
31
|
+
a `description` property is available.
|
|
32
|
+
|
|
33
|
+
Search for metrics with `cpu` in their **name** or **description** (case-insensitive):
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Keys(@Definitions)[?] like '%cpu%' ci or @Definitions[?].description like '%cpu%' ci
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Search for metrics reported by a specific service:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
@Resource.service.name = 'accounting'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If metrics searches report syntax errors, you MUST load the `seq-search-and-query` skill.
|
|
46
|
+
|
|
47
|
+
## Listing Dimensions
|
|
48
|
+
|
|
49
|
+
Determine the dimensions that apply to a metric using the dimensions MCP tool or the `seqcli metrics dimensions` CLI
|
|
50
|
+
command.
|
|
51
|
+
|
|
52
|
+
## Listing Unique Dimension Values
|
|
53
|
+
|
|
54
|
+
DO NOT use `distinct` to query for the values of a metric dimension like `@Resource.service.name`. Always use the
|
|
55
|
+
dimension values MCP tool or `seqcli metrics dimensionvalues` CLI command.
|
|
56
|
+
|
|
57
|
+
## Querying Metric Samples
|
|
58
|
+
|
|
59
|
+
Metrics returned from definition searches are tagged with a kind:
|
|
60
|
+
|
|
61
|
+
* `Sum` - counter with delta aggregation temporality
|
|
62
|
+
* `Gauge` - gauge or counter with cumulative aggregation temporality
|
|
63
|
+
* `Fixed` - histogram with fixed buckets
|
|
64
|
+
* `Exponential` - histogram with exponential buckets
|
|
65
|
+
|
|
66
|
+
Correctly querying metric sample data from `series` relies on knowing the metric kind.
|
|
67
|
+
|
|
68
|
+
### `Sum` Query Example
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
select sum(app_product_review_counter) as reviews_submitted
|
|
72
|
+
from series
|
|
73
|
+
where Has(app_product_review_counter)
|
|
74
|
+
and @Timestamp >= now() - 15m
|
|
75
|
+
group by time(1m)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### `Gauge` Query Examples
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
select max(dotnet.gc.last_collection.heap.size) as heap_size_bytes
|
|
82
|
+
from series
|
|
83
|
+
where (Has(dotnet.gc.last_collection.heap.size))
|
|
84
|
+
and @Resource.service.name = 'accounting'
|
|
85
|
+
and @Timestamp >= now() - 15m
|
|
86
|
+
group by time(1m), @Resource.service.instance.id
|
|
87
|
+
having heap_size_bytes > 5000000
|
|
88
|
+
limit 100
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `Fixed` Query Examples
|
|
92
|
+
|
|
93
|
+
HTTP request timing percentiles:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
select
|
|
97
|
+
phist(coalesce((bucket.from + bucket.to) / 2, bucket.from, bucket.to), bucket.count, 95) as p95,
|
|
98
|
+
phist(coalesce((bucket.from + bucket.to) / 2, bucket.from, bucket.to), bucket.count, 99) as p99
|
|
99
|
+
from series
|
|
100
|
+
lateral unnest(http.server.request.duration.buckets) as bucket
|
|
101
|
+
where Has(http.server.request.duration.buckets)
|
|
102
|
+
and @Resource.service.name = 'cart'
|
|
103
|
+
and @Scope.name = 'Microsoft.AspNetCore.Hosting'
|
|
104
|
+
and @Timestamp >= now() - 15m
|
|
105
|
+
group by time(1m)
|
|
106
|
+
limit 100
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
HTTP request througput (counts):
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
select sum(http.server.request.duration.count) as request_throughput
|
|
113
|
+
from series
|
|
114
|
+
where Has(http.server.request.duration.buckets)
|
|
115
|
+
and @Resource.service.name = 'cart'
|
|
116
|
+
and @Scope.name = 'Microsoft.AspNetCore.Hosting'
|
|
117
|
+
and @Timestamp >= now() - 15m
|
|
118
|
+
group by time(1m)
|
|
119
|
+
limit 100
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Maximium HTTP request body size:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
select max(http.server.request.body.size.max) as max_body_size
|
|
126
|
+
from series
|
|
127
|
+
where Has(http.server.request.body.size.buckets)
|
|
128
|
+
and @Resource.service.name = 'shipping'
|
|
129
|
+
and @Scope.name = 'opentelemetry-instrumentation-actix-web'
|
|
130
|
+
and @Timestamp >= now() - 15m
|
|
131
|
+
group by time(1m)
|
|
132
|
+
limit 100
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### `Exponential` Query Examples
|
|
136
|
+
|
|
137
|
+
Commit timing percentiles:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
select
|
|
141
|
+
phist(bucket.midpoint, bucket.count, 95) as p95,
|
|
142
|
+
phist(bucket.midpoint, bucket.count, 99) as p99
|
|
143
|
+
from series
|
|
144
|
+
lateral unnest(commit_duration.buckets) as bucket
|
|
145
|
+
where Has(commit_duration.buckets)
|
|
146
|
+
and @Timestamp >= now() - 15m
|
|
147
|
+
group by time(1m)
|
|
148
|
+
limit 100
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Gotchas
|
|
152
|
+
|
|
153
|
+
- If metrics that should be _counters_ show up as _gauges_, aggregation temporality is likely to be misconfigured: danger! This can produce wildly inaccurate results if not detected.
|
|
154
|
+
- When writing queries that aggregate metric samples, `where Has(<metric name>)` must always be included to avoid row count skew.
|
|
155
|
+
- Do NOT use `select disctint(<dimension>)` with metric dimensions: aways use the optimized dimension value searches exposed by `seqcli` or the MCP tools.
|
|
156
|
+
- Group keys are automatically included in result rowsets and **must not** be explicitly included in the `select` list.
|
|
157
|
+
- To order by group keys, apply an alias with `group by <expr> as <alias>` and use `order by <alias>`. Never add the group key to the `select` list, this will fail.
|
package/Superpower.dll
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/System.Core.dll
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/System.Data.dll
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|