You are viewing docs on Elastic's new documentation system, currently in technical preview. For all other Elastic docs, visit elastic.co/guide.

Azure App Service

Collect logs and metrics from Azure App Service with Elastic Agent.

Version
0.2.0 (View all)
Compatible Kibana version(s)
8.7.1 or higher
Supported Serverless project types

Security
Observability
Subscription level
Basic
Level of support
Elastic

The Azure App Service logs integration retrieves different types of logs categories from Azure App Service. Azure App Service provides different logging to help you track, monitor, and debug your web application.

  • HTTPLogs help monitor application health, performance and usage patterns.
  • AuditLogs provide insights when publishing users successfully log on via one of the App Service publishing protocols.
  • IPSecAuditLogs are generated through your application and pushed to Azure Monitoring.
  • PlatformLogs are generated through AppService platform for your application.
  • ConsoleLogs are generated from application or container.
  • AppLogs are generated through your application (ex. logging capabilities)

Data streams

This integration currently collects one data stream:

  • App Service Logs

Requirements

Credentials

eventhub : string Is the fully managed, real-time data ingestion service.

consumer_group : string The publish/subscribe mechanism of Event Hubs is enabled through consumer groups. A consumer group is a view (state, position, or offset) of an entire event hub. Consumer groups enable multiple consuming applications to each have a separate view of the event stream, and to read the stream independently at their own pace and with their own offsets. Default value: $Default

connection_string : string The connection string required to communicate with Event Hubs, steps here https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string.

A Blob Storage account is required in order to store/retrieve/update the offset or state of the eventhub messages. This means that after stopping the filebeat azure module it can start back up at the spot that it stopped processing messages.

storage_account : string The name of the storage account the state/offsets will be stored and updated.

storage_account_key : string The storage account key, this key will be used to authorize access to data in your storage account.

resource_manager_endpoint : string Optional, by default we are using the azure public environment, to override, users can provide a specific resource manager endpoint in order to use a different azure environment. Ex: https://management.chinacloudapi.cn/ for azure ChinaCloud https://management.microsoftazure.de/ for azure GermanCloud https://management.azure.com/ for azure PublicCloud https://management.usgovcloudapi.net/ for azure USGovernmentCloud Users can also use this in case of a Hybrid Cloud model, where one may define their own endpoints.

App Service Logs

Exported fields

FieldDescriptionType
@timestamp
Event timestamp.
date
azure.app_service.category
The category of the operation.
keyword
azure.app_service.container_id
Application container id
keyword
azure.app_service.event_ip_address
IP address of the event
keyword
azure.app_service.event_primary_stamp_name
Primary name of the service
keyword
azure.app_service.event_stamp_name
Name of the service
keyword
azure.app_service.event_stamp_type
Values that the service supports
keyword
azure.app_service.host
Host where the application is running
keyword
azure.app_service.level
Verbosity level of log
keyword
azure.app_service.log
Details about the event depending on level
keyword
azure.app_service.operation_name
The operation name.
keyword
azure.app_service.properties.client_ip
IP address of the client.
ip
azure.app_service.properties.client_port
IP address of the client.
long
azure.app_service.properties.computer_name
The name of the server on which the log file entry was generated.
keyword
azure.app_service.properties.cookie
Cookie on HTTP request.
keyword
azure.app_service.properties.cs_bytes
Number of bytes received by server.
long
azure.app_service.properties.cs_host
Host name header on HTTP request.
keyword
azure.app_service.properties.cs_method
keyword
azure.app_service.properties.cs_uri_query
URI query on HTTP request.
keyword
azure.app_service.properties.cs_uri_stem
The target of the request.
keyword
azure.app_service.properties.cs_username
The name of the authenticated user on HTTP request.
keyword
azure.app_service.properties.details
Additional information
keyword
azure.app_service.properties.protocol
Authentication protocol.
keyword
azure.app_service.properties.referer
The site that the user last visited. This site provided a link to the current site.
keyword
azure.app_service.properties.result
Success / Failure of HTTP request.
keyword
azure.app_service.properties.s_port
Server port number.
keyword
azure.app_service.properties.sc_bytes
Number of bytes sent by server.
long
azure.app_service.properties.sc_status
HTTP status code.
long
azure.app_service.properties.sc_substatus
Substatus error code on HTTP request.
keyword
azure.app_service.properties.sc_win32status
Windows status code on HTTP request.
keyword
azure.app_service.properties.service_endpoint
This indicates whether the access is via Virtual Network Service Endpoint communication
keyword
azure.app_service.properties.source_system
The source system
keyword
azure.app_service.properties.time_generated
Time of the Http Request
keyword
azure.app_service.properties.time_taken
Time taken by HTTP request in milliseconds.
long
azure.app_service.properties.type
The name of the table
keyword
azure.app_service.properties.user
Username used for publishing access.
keyword
azure.app_service.properties.user_agent
User agent on HTTP request.
keyword
azure.app_service.properties.user_display_name
Email address of a user in case publishing was authorized via AAD authentication.
keyword
azure.app_service.properties.xazurefdid
X-Azure-FDID header (Azure Frontdoor Id) of the HTTP request
keyword
azure.app_service.properties.xfdhealth_probe
X-FD-HealthProbe (Azure Frontdoor Health Probe) of the HTTP request
keyword
azure.app_service.properties.xforwarded_for
X-Forwarded-For header of the HTTP request
keyword
azure.app_service.properties.xforwarded_host
X-Forwarded-Host header of the HTTP request
keyword
azure.app_service.result_description
Log message description
keyword
azure.correlation_id
Correlation ID
keyword
azure.resource.authorization_rule
Authorization rule
keyword
azure.resource.group
Resource group
keyword
azure.resource.id
Resource ID
keyword
azure.resource.name
Name
keyword
azure.resource.namespace
Resource type/namespace
keyword
azure.resource.provider
Resource type/namespace
keyword
azure.subscription_id
Azure subscription ID
keyword
azure.tenant_id
tenant ID
keyword
cloud.account.id
The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.
keyword
cloud.provider
Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.
keyword
data_stream.dataset
Data stream dataset name.
constant_keyword
data_stream.namespace
Data stream namespace.
constant_keyword
data_stream.type
Data stream type.
constant_keyword
dataset.name
Dataset name.
constant_keyword
dataset.namespace
Dataset namespace.
constant_keyword
dataset.type
Dataset type.
constant_keyword
destination.address
Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the .address field. Then it should be duplicated to .ip or .domain, depending on which one it is.
keyword
destination.as.number
Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
long
destination.as.organization.name
Organization name.
keyword
destination.as.organization.name.text
Multi-field of destination.as.organization.name.
match_only_text
destination.bytes
Bytes sent from the destination to the source.
long
destination.domain
The domain name of the destination system. This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment.
keyword
destination.geo.city_name
City name.
keyword
destination.geo.continent_name
Name of the continent.
keyword
destination.geo.country_iso_code
Country ISO code.
keyword
destination.geo.country_name
Country name.
keyword
destination.geo.location
Longitude and latitude.
geo_point
destination.geo.name
User-defined description of a location, at the level of granularity they care about. Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. Not typically used in automated geolocation.
keyword
destination.geo.region_iso_code
Region ISO code.
keyword
destination.geo.region_name
Region name.
keyword
destination.ip
IP address of the destination (IPv4 or IPv6).
ip
destination.nat.ip
Translated ip of destination based NAT sessions (e.g. internet to private DMZ) Typically used with load balancers, firewalls, or routers.
ip
destination.nat.port
Port the source session is translated to by NAT Device. Typically used with load balancers, firewalls, or routers.
long
destination.port
Port of the destination.
long
dns.header_flags
Array of 2 letter DNS header flags. Expected values are: AA, TC, RD, RA, AD, CD, DO.
keyword
dns.question.class
The class of records being queried.
keyword
dns.question.name
The name being queried. If the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \t, \r, and \n respectively.
keyword
dns.question.type
The type of record being queried.
keyword
dns.response_code
ecs.version
ECS version this event conforms to. ecs.version is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events.
keyword
event.action
The action captured by the event. This describes the information in the event. It is more specific than event.category. Examples are group-add, process-started, file-created. The value is normally defined by the implementer.
keyword
event.category
This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy. event.category represents the "big buckets" of ECS categories. For example, filtering on event.category:process yields all events relating to process activity. This field is closely related to event.type, which is used as a subcategory. This field is an array. This will allow proper categorization of some events that fall in multiple categories.
keyword
event.created
event.created contains the date/time when the event was first read by an agent, or by your pipeline. This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. In case the two timestamps are identical, @timestamp should be used.
date
event.duration
Duration of the event in nanoseconds. If event.start and event.end are known this value should be the difference between the end and start time.
long
event.id
Unique ID to describe the event.
keyword
event.ingested
Timestamp when an event arrived in the central data store. This is different from @timestamp, which is when the event originally occurred. It's also different from event.created, which is meant to capture the first time an agent saw the event. In normal conditions, assuming no tampering, the timestamps should chronologically look like this: @timestamp < event.created < event.ingested.
date
event.kind
This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. event.kind gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not.
keyword
event.type
This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy. event.type represents a categorization "sub-bucket" that, when used along with the event.category field values, enables filtering events down to a level appropriate for single visualization. This field is an array. This will allow proper categorization of some events that fall in multiple event types.
keyword
geo.city_name
City name.
keyword
geo.continent_name
Name of the continent.
keyword
geo.country_iso_code
Country ISO code.
keyword
geo.country_name
Country name.
keyword
geo.location
Longitude and latitude.
geo_point
geo.name
User-defined description of a location, at the level of granularity they care about. Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. Not typically used in automated geolocation.
keyword
geo.region_iso_code
Region ISO code.
keyword
geo.region_name
Region name.
keyword
log.level
Original log level of the log event. If the source of the event provides a log level or textual severity, this is the one that goes in log.level. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). Some examples are warn, err, i, informational.
keyword
message
For log events the message field contains the log message, optimized for viewing in a log viewer. For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. If multiple messages exist, they can be combined into one message.
match_only_text
network.iana_number
IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number.
keyword
network.protocol
In the OSI Model this would be the Application Layer protocol. For example, http, dns, or ssh. The field value must be normalized to lowercase for querying.
keyword
network.transport
Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) The field value must be normalized to lowercase for querying.
keyword
observer.name
Custom name of the observer. This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. If no custom name is needed, the field can be left empty.
keyword
observer.product
The product name of the observer.
keyword
observer.type
The type of the observer the data is coming from. There is no predefined list of observer types. Some examples are forwarder, firewall, ids, ips, proxy, poller, sensor, APM server.
keyword
observer.vendor
Vendor name of the observer.
keyword
related.hosts
All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases.
keyword
related.ip
All of the IPs seen on your event.
ip
related.user
All the user names or other user identifiers seen on the event.
keyword
rule.category
A categorization value keyword used by the entity using the rule for detection of this event.
keyword
rule.id
A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event.
keyword
rule.name
The name of the rule or signature generating the event.
keyword
rule.ruleset
Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member.
keyword
source.address
Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the .address field. Then it should be duplicated to .ip or .domain, depending on which one it is.
keyword
source.as.number
Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet.
long
source.as.organization.name
Organization name.
keyword
source.as.organization.name.text
Multi-field of source.as.organization.name.
match_only_text
source.bytes
Bytes sent from the source to the destination.
long
source.geo.city_name
City name.
keyword
source.geo.continent_name
Name of the continent.
keyword
source.geo.country_iso_code
Country ISO code.
keyword
source.geo.country_name
Country name.
keyword
source.geo.location
Longitude and latitude.
geo_point
source.geo.name
User-defined description of a location, at the level of granularity they care about. Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. Not typically used in automated geolocation.
keyword
source.geo.region_iso_code
Region ISO code.
keyword
source.geo.region_name
Region name.
keyword
source.ip
IP address of the source (IPv4 or IPv6).
ip
source.port
Port of the source.
long
tags
List of keywords used to tag each event.
keyword
url.original
Unmodified original url as seen in the event source. Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. This field is meant to represent the URL as it was observed, complete or not.
wildcard
url.original.text
Multi-field of url.original.
match_only_text

Changelog

VersionDetailsKibana version(s)

0.2.0

Enhancement View pull request
Enable 'secret' for the sensitive fields, supported from 8.12.

0.1.0

Enhancement View pull request
Update the package format_version to 3.0.0.

0.0.1

Enhancement View pull request
Initial release

On this page