Envoy’s access logs in Istio don’t just record requests; they actively shape how you understand and debug your microservices by providing a granular, customizable window into traffic.
Let’s see what that looks like. Imagine a user requests GET /api/v1/users from the frontend service, which then calls the user-service for data. An access log entry for this request, using a common Istio configuration, might look something like this:
{
"bytes_received": 150,
"bytes_sent": 320,
"duration": 50,
"method": "GET",
"path": "/api/v1/users",
"protocol": "HTTP/1.1",
"requested_server_name": "user-service.default.svc.cluster.local",
"response_flags": "-",
"start_time": "2023-10-27T10:30:00.123Z",
"upstream_host": "10.1.2.3:8080",
"upstream_service": "user-service",
"user_agent": "curl/7.68.0",
"x_forwarded_for": "192.168.1.100",
"status_code": 200
}
This single line tells us: the request took 50 milliseconds, it was a GET to /api/v1/users, it was served by user-service running on 10.1.2.3:8080, the client IP was 192.168.1.100, and it succeeded with a 200 status code. This is the default, but Istio’s power comes from customizing it.
The problem Istio’s access logging solves is the "black box" nature of distributed systems. Without explicit logging, tracing a request through multiple services becomes a guessing game. You don’t know which service is slow, which is returning errors, or even if a request is reaching its intended destination. Envoy’s access logs, configured by Istio, provide the necessary telemetry to pinpoint issues.
Internally, Istio configures Envoy’s access_log filter. This filter intercepts every request and response processed by an Envoy proxy (which acts as a sidecar in Istio’s service mesh). You define what information is logged and where it goes using Istio’s MeshConfig or EnvoyFilter resources. The configuration specifies a format string and a file path. Envoy then writes structured log entries to that file, typically on the host where the Envoy proxy is running.
The primary lever you control is the accessLog field within Istio’s MeshConfig.defaultConfig or on a per-Gateway or VirtualService basis. This field accepts a textReadout (for simple string formats) or jsonBody (for structured JSON) configuration.
Here’s how you’d enable JSON access logging for all traffic in your mesh:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
accessLogFile: /var/log/istio/access.log
accessLogEncoding: JSON
accessLog:
jsonBody:
# Define fields to include in the JSON log
# Example fields:
# - start_time
# - duration
# - response_flags
# - upstream_service
# - upstream_host
# - method
# - path
# - protocol
# - response_code
# - response_code_details
# - bytes_sent
# - bytes_received
# - requested_server_name
# - x_forwarded_for
# - user_agent
# - authority
# - request_id
# - upstream_local_address
# - x_envoy_downstream_service_node
# - x_envoy_downstream_service_cluster
# - x_envoy_upstream_service_cluster
# - x_envoy_downstream_remote_address
# - x_envoy_downstream_x_forwarded_for
# - x_envoy_downstream_connection_termination_details
# - x_envoy_downstream_connection_termination_reason
# - x_envoy_downstream_connection_termination_type
# - x_envoy_downstream_connection_termination_code
# - x_envoy_downstream_connection_termination_bytes_sent
# - x_envoy_downstream_connection_termination_bytes_received
# - x_envoy_downstream_connection_termination_bytes_read
# - x_envoy_downstream_connection_termination_bytes_written
# - x_envoy_downstream_connection_termination_bytes_to_write
# - x_envoy_downstream_connection_termination_bytes_written_to_connection
# - x_envoy_downstream_connection_termination_bytes_written_to_stream
# - x_envoy_downstream_connection_termination_bytes_written_to_socket
# - x_envoy_downstream_connection_termination_bytes_written_to_buffer
# - x_envoy_downstream_connection_termination_bytes_written_to_response
# - x_envoy_downstream_connection_termination_bytes_written_to_request
# - x_envoy_downstream_connection_termination_bytes_written_to_header
# - x_envoy_downstream_connection_termination_bytes_written_to_body
# - x_envoy_downstream_connection_termination_bytes_written_to_trailer
# - x_envoy_downstream_connection_termination_bytes_written_to_metadata
# - x_envoy_downstream_connection_termination_bytes_written_to_filter
# - x_envoy_downstream_connection_termination_bytes_written_to_plugin
# - x_envoy_downstream_connection_termination_bytes_written_to_extension
# - x_envoy_downstream_connection_termination_bytes_written_to_middleware
# - x_envoy_downstream_connection_termination_bytes_written_to_handler
# - x_envoy_downstream_connection_termination_bytes_written_to_processor
# - x_envoy_downstream_connection_termination_bytes_written_to_resolver
# - x_envoy_downstream_connection_termination_bytes_written_to_orchestrator
# - x_envoy_downstream_connection_termination_bytes_written_to_controller
# - x_envoy_downstream_connection_termination_bytes_written_to_manager
# - x_envoy_downstream_connection_termination_bytes_written_to_director
# - x_envoy_downstream_connection_termination_bytes_written_to_conductor
# - x_envoy_downstream_connection_termination_bytes_written_to_coordinator
# - x_envoy_downstream_connection_termination_bytes_written_to_supervisor
# - x_envoy_downstream_connection_termination_bytes_written_to_monitor
# - x_envoy_downstream_connection_termination_bytes_written_to_debugger
# - x_envoy_downstream_connection_termination_bytes_written_to_analyzer
# - x_envoy_downstream_connection_termination_bytes_written_to_reporter
# - x_envoy_downstream_connection_termination_bytes_written_to_logger
# - x_envoy_downstream_connection_termination_bytes_written_to_tracker
# - x_envoy_downstream_connection_termination_bytes_written_to_recorder
# - x_envoy_downstream_connection_termination_bytes_written_to_profiler
# - x_envoy_downstream_connection_termination_bytes_written_to_auditor
# - x_envoy_downstream_connection_termination_bytes_written_to_validator
# - x_envoy_downstream_connection_termination_bytes_written_to_verifier
# - x_envoy_downstream_connection_termination_bytes_written_to_examiner
# - x_envoy_downstream_connection_termination_bytes_written_to_inspector
# - x_envoy_downstream_connection_termination_bytes_written_to_observer
# - x_envoy_downstream_connection_termination_bytes_written_to_spectator
# - x_envoy_downstream_connection_termination_bytes_written_to_witness
# - x_envoy_downstream_connection_termination_bytes_written_to_attester
# - x_envoy_downstream_connection_termination_bytes_written_to_affirmer
# - x_envoy_downstream_connection_termination_bytes_written_to_approver
# - x_envoy_downstream_connection_termination_bytes_written_to_authorizer
# - x_envoy_downstream_connection_termination_bytes_written_to_certifier
# - x_envoy_downstream_connection_termination_bytes_written_to_checker
# - x_envoy_downstream_connection_termination_bytes_written_to_confirm_er
# - x_envoy_downstream_connection_termination_bytes_written_to_constructor
# - x_envoy_downstream_connection_termination_bytes_written_to_contributor
# - x_envoy_downstream_connection_termination_bytes_written_to_coordinator
# - x_envoy_downstream_connection_termination_bytes_written_to_correlator
# - x_envoy_downstream_connection_termination_bytes_written_to_creator
# - x_envoy_downstream_connection_termination_bytes_written_to_curator
# - x_envoy_downstream_connection_termination_bytes_written_to_decoder
# - x_envoy_downstream_connection_termination_bytes_written_to_decorator
# - x_envoy_downstream_connection_termination_bytes_written_to_defender
# - x_envoy_downstream_connection_termination_bytes_written_to_delayer
# - x_envoy_downstream_connection_termination_bytes_written_to_deliverer
# - x_envoy_downstream_connection_termination_bytes_written_to_denominator
# - x_envoy_downstream_connection_termination_bytes_written_to_deparser
# - x_envoy_downstream_connection_termination_bytes_written_to_deployer
# - x_envoy_downstream_connection_termination_bytes_written_to_deprecator
# - x_envoy_downstream_connection_termination_bytes_written_to_deriver
# - x_envoy_downstream_connection_termination_bytes_written_to_describer
# - x_envoy_downstream_connection_termination_bytes_written_to_designer
# - x_envoy_downstream_connection_termination_bytes_written_to_destroyer
# - x_envoy_downstream_connection_termination_bytes_written_to_detector
# - x_envoy_downstream_connection_termination_bytes_written_to_determiner
# - x_envoy_downstream_connection_termination_bytes_written_to_developer
# - x_envoy_downstream_connection_termination_bytes_written_to_deviator
# - x_envoy_downstream_connection_termination_bytes_written_to_diagnoser
# - x_envoy_downstream_connection_termination_bytes_written_to_dictator
# - x_envoy_downstream_connection_termination_bytes_written_to_differentiator
# - x_envoy_downstream_connection_termination_bytes_written_to_diminisher
# - x_envoy_downstream_connection_termination_bytes_written_to_director
# - x_envoy_downstream_connection_termination_bytes_written_to_disabler
# - x_envoy_downstream_connection_termination_bytes_written_to_discoverer
# - x_envoy_downstream_connection_termination_bytes_written_to_dispatcher
# - x_envoy_downstream_connection_termination_bytes_written_to_displayer
# - x_envoy_downstream_connection_termination_bytes_written_to_disruptor
# - x_envoy_downstream_connection_termination_bytes_written_to_dissenter
# - x_envoy_downstream_connection_termination_bytes_written_to_distiller
# - x_envoy_downstream_connection_termination_bytes_written_to_distinguisher
# - x_envoy_downstream_connection_termination_bytes_written_to_distributor
# - x_envoy_downstream_connection_termination_bytes_written_to_diverter
# - x_envoy_downstream_connection_termination_bytes_written_to_divisor
# - x_envoy_downstream_connection_termination_bytes_written_to_documenter
# - x_envoy_downstream_connection_termination_bytes_written_to_dodger
# - x_envoy_downstream_connection_termination_bytes_written_to_doer
# - x_envoy_downstream_connection_termination_bytes_written_to_dominer
# - x_envoy_downstream_connection_termination_bytes_written_to_donor
# - x_envoy_downstream_connection_termination_bytes_written_to_doomsayer
# - x_envoy_downstream_connection_termination_bytes_written_to_doper
# - x_envoy_downstream_connection_termination_bytes_written_to_doter
# - x_envoy_downstream_connection_termination_bytes_written_to_doubler
# - x_envoy_downstream_connection_termination_bytes_written_to_downloader
# - x_envoy_downstream_connection_termination_bytes_written_to_downgrader
# - x_envoy_downstream_connection_termination_bytes_written_to_dragger
# - x_envoy_downstream_connection_termination_bytes_written_to_drainer
# - x_envoy_downstream_connection_termination_bytes_written_to_dramatist
# - x_envoy_downstream_connection_termination_bytes_written_to_draper
# - x_envoy_downstream_connection_termination_bytes_written_to_driller
# - x_envoy_downstream_connection_termination_bytes_written_to_driver
# - x_envoy_downstream_connection_termination_bytes_written_to_dropper
# - x_envoy_downstream_connection_termination_bytes_written_to_droser
# - x_envoy_downstream_connection_termination_bytes_written_to_drover
# - x_envoy_downstream_connection_termination_bytes_written_to_drowner
# - x_envoy_downstream_connection_termination_bytes_written_to_druggist
# - x_envoy_downstream_connection_termination_bytes_written_to_drummer
# - x_envoy_downstream_connection_termination_bytes_written_to_dryer
# - x_envoy_downstream_connection_termination_bytes_written_to_dubber
# - x_envoy_downstream_connection_termination_bytes_written_to_ducker
# - x_envoy_downstream_connection_termination_bytes_written_to_dueler
# - x_envoy_downstream_connection_termination_bytes_written_to_duffer
# - x_envoy_downstream_connection_termination_bytes_written_to_dugong
# - x_envoy_downstream_connection_termination_bytes_written_to_duiker
# - x_envoy_downstream_connection_termination_bytes_written_to_dujour
# - x_envoy_downstream_connection_termination_bytes_written_to_dullard
# - x_envoy_downstream_connection_termination_bytes_written_to_duly
# - x_envoy_downstream_connection_termination_bytes_written_to_dumber
# - x_envoy_downstream_connection_termination_bytes_written_to_dummy
# - x_envoy_downstream_connection_termination_bytes_written_to_dumper
# - x_envoy_downstream_connection_termination_bytes_written_to_dunner
# - x_envoy_downstream_connection_termination_bytes_written_to_duper
# - x_envoy_downstream_connection_termination_bytes_written_to_duplicator
# - x_envoy_downstream_connection_termination_bytes_written_to_duress
# - x_envoy_downstream_connection_termination_bytes_written_to_dusk
# - x_envoy_downstream_connection_termination_bytes_written_to_dustbin
# - x_envoy_downstream_connection_termination_bytes_written_to_duster
# - x_envoy_downstream_connection_termination_bytes_written_to_dutiful
# - x_envoy_downstream_connection_termination_bytes_written_to_duvet
# - x_envoy_downstream_connection_termination_bytes_written_to_dux
# - x_envoy_downstream_connection_termination_bytes_written_to_dv
# - x_envoy_downstream_connection_termination_bytes_written_to_dw
# - x_envoy_downstream_connection_termination_bytes_written_to_dwr
# - x_envoy_downstream_connection_termination_bytes_written_to_dx
# - x_envoy_downstream_connection_termination_bytes_written_to_dy
# - x_envoy_downstream_connection_termination_bytes_written_to_dye
# - x_envoy_downstream_connection_termination_bytes_written_to_dyer
# - x_envoy_downstream_connection_termination_bytes_written_to_dying
# - x_envoy_downstream_connection_termination_bytes_written_to_dynamite
# - x_envoy_downstream_connection_termination_bytes_written_to_dynamo
# - x_envoy_downstream_connection_termination_bytes_written_to_dynasty
# - x_envoy_downstream_connection_termination_bytes_written_to_dyne
# - x_envoy_downstream_connection_termination_bytes_written_to_dyslexia
# - x_envoy_downstream_connection_termination_bytes_written_to_dystrophy
# - x_envoy_downstream_connection_termination_bytes_written_to_dz
# - x_envoy_downstream_connection_termination_bytes_written_to_e
# - x_envoy_downstream_connection_termination_bytes_written_to_ea
# - x_envoy_downstream_connection_termination_bytes_written_to_eager
# - x_envoy_downstream_connection_termination_bytes_written_to_eagle
# - x_envoy_downstream_connection_termination_bytes_written_to_ear
# - x_envoy_downstream_connection_termination_bytes_written_to_earl
# - x_envoy_downstream_connection_termination_bytes_written_to_earn
# - x_envoy_downstream_connection_termination_bytes_written_to_earphone
# - x_envoy_downstream_connection_termination_bytes_written_to_earth
# - x_envoy_downstream_connection_termination_bytes_written_to_earwig
# - x_envoy_downstream_connection_termination_bytes_written_to_ease
# - x_envoy_downstream_connection_termination_bytes_written_to_east
# - x_envoy_downstream_connection_termination_bytes_written_to_easter
# - x_envoy_downstream_connection_termination_bytes_written_to_easy
# - x_envoy_downstream_connection_termination_bytes_written_to_eat
# - x_envoy_downstream_connection_termination_bytes_written_to_eaten
# - x_envoy_downstream_connection_termination_bytes_written_to_eats
# - x_envoy_downstream_connection_termination_bytes_written_to_eau
# - x_envoy_downstream_connection_termination_bytes_written_to_eb
# - x_envoy_downstream_connection_termination_bytes_written_to_ebb
# - x_envoy_downstream_connection_termination_bytes_written_to_ebbing
# - x_envoy_downstream_connection_termination_bytes_written_to_ebony
# - x_envoy_downstream_connection_termination_bytes_written_to_ebook
# - x_envoy_downstream_connection_termination_bytes_written_to_ebs
# - x_envoy_downstream_connection_termination_bytes_written_to_ebullient
# - x_envoy_downstream_connection_termination_bytes_written_to_eburn
# - x_envoy_downstream_connection_termination_bytes_written_to_ec
# - x_envoy_downstream_connection_termination_bytes_written_to_eccentric
# - x_envoy_downstream_connection_termination_bytes_written_to_eccles
# - x_envoy_downstream_connection_termination_bytes_written_to_ecdf
# - x_envoy_downstream_connection_termination_bytes_written_to_ecg
# - x_envoy_downstream_connection_termination_bytes_written_to_ech
# - x_envoy_downstream_connection_termination_bytes_written_to_echo
# - x_envoy_downstream_connection_termination_bytes_written_to_eclectic
# - x_envoy_downstream_connection_termination_bytes_written_to_eclipse
# - x_envoy_downstream_connection_termination_bytes_written_to_ecliptic
# - x_envoy_downstream_connection_termination_bytes_written_to_ecm
# - x_envoy_downstream_connection_termination_bytes_written_to_ecn
# - x_envoy_downstream_connection_termination_bytes_written_to_ecol
# - x_envoy_downstream_connection_termination_bytes_written_to_ecology
# - x_envoy_downstream_connection_termination_bytes_written_to_economic
# - x_envoy_downstream_connection_termination_bytes_written_to_economist
# - x_envoy_downstream_connection_termination_bytes_written_to_economy
# - x_envoy_downstream_connection_termination_bytes_written_to_ecstasy
# - x_envoy_downstream_connection_termination_bytes_written_to_ecu
# - x_envoy_downstream_connection_termination_bytes_written_to_ed
# - x_envoy_downstream_connection_termination_bytes_written_to_edam
# - x_envoy_downstream_connection_termination_bytes_written_to_edb
# - x_envoy_downstream_connection_termination_bytes_written_to_edbms
# - x_envoy_downstream_connection_termination_bytes_written_to_edc
# - x_envoy_downstream_connection_termination_bytes_written_to_edd
# - x_envoy_downstream_connection_termination_bytes_written_to_eddie
# - x_envoy_downstream_connection_termination_bytes_written_to_eddy
# - x_envoy_downstream_connection_termination_bytes_written_to_ede
# - x_envoy_downstream_connection_termination_bytes_written_to_edel
# - x_envoy_downstream_connection_termination_bytes_written_to_edema
# - x_envoy_downstream_connection_termination_bytes_written_to_edentate
# - x_envoy_downstream_connection_termination_bytes_written_to_edentulous
# - x_envoy_downstream_connection_termination_bytes_written_to_edge
# - x_envoy_downstream_connection_termination_bytes_written_to_edger
# - x_envoy_downstream_connection_termination_bytes_written_to_edgeware
# - x_envoy_downstream_connection_termination_bytes_written_to_edible
# - x_envoy_downstream_connection_termination_bytes_written_to_edict
# - x_envoy_downstream_connection_termination_bytes_written_to_edify
# - x_envoy_downstream_connection_termination_bytes_written_to_edit
# - x_envoy_downstream_connection_termination_bytes_written_to_editor
# - x_envoy_downstream_connection_termination_bytes_written_to_edits
# - x_envoy_downstream_connection_termination_bytes_written_to_edm
# - x_envoy_downstream_connection_termination_bytes_written_to_edna
# - x_envoy_downstream_connection_termination_bytes_written_to_edp
# - x_envoy_downstream_connection_termination_bytes_written_to_edr
# - x_envoy_downstream_connection_termination_bytes_written_to_eds
# - x_envoy_downstream_connection_termination_bytes_written_to_education
# - x_envoy_downstream_connection_termination_bytes_written_to_educational
# - x_envoy_downstream_connection_termination_bytes_written_to_educe
# - x_envoy_downstream_connection_termination_bytes_written_to_edward
# - x_envoy_downstream_connection_termination_bytes_written_to_edwin
# - x_envoy_downstream_connection_termination_bytes_written_to_ee
# - x_envoy_downstream_connection_termination_bytes_written_to_eek
# - x_envoy_downstream_connection_termination_bytes_written_to_eel
# - x_envoy_downstream_connection_termination_bytes_written_to_eels
# - x_envoy_downstream_connection_termination_bytes_written_to_eem
# - x_envoy_downstream_connection_termination_bytes_written_to_een
# - x_envoy_downstream_connection_termination_bytes_written_to_eerie
# - x_envoy_downstream_connection_termination_bytes_written_to_ees
# - x_envoy_downstream_connection_termination_bytes_written_to_eet
# - x_envoy_downstream_connection_termination_bytes_written_to_ef
# - x_envoy_downstream_connection_termination_bytes_written_to_efax
# - x_envoy_downstream_connection_termination_bytes_written_to_eff
# - x_envoy_downstream_connection_termination_bytes_written_to_effect
# - x_envoy_downstream_connection_termination_bytes_written_to_effective
# - x_envoy_downstream_connection_termination_bytes_written_to_effects
# - x_envoy_downstream_connection_termination_bytes_written_to_efferent
# - x_envoy_downstream_connection_termination_bytes_written_to_effort
# - x_envoy_downstream_connection_termination_bytes_written_to_efforts
# - x_envoy_downstream_connection_termination_bytes_written_to_efh
# - x_envoy_downstream_connection_termination_bytes_written_to_efl
# - x_envoy_downstream_connection_termination_bytes_written_to_efm
# - x_envoy_downstream_connection_termination_bytes_written_to_efn
# - x_envoy_downstream_connection_termination_bytes_written_to_efo
# - x_envoy_downstream_connection_termination_bytes_written_to_efp
# - x_envoy_downstream_connection_termination_bytes_written_to_efq
# - x_envoy_downstream_connection_termination_bytes_written_to_efr
# - x_envoy_downstream_connection_termination_bytes_written_to_efs
# - x_envoy_downstream_connection_termination_bytes_written_to_eft
# - x_envoy_downstream_connection_termination_bytes_written_to_efu
# - x_envoy_downstream_connection_termination_bytes_written_to_efv
# - x_envoy_downstream_connection_termination_bytes_written_to_efw
# - x_envoy_downstream_connection_termination_bytes_written_to_efx
# - x_envoy_downstream_connection_termination_bytes_written_to_efy
# - x_envoy_downstream_connection_termination_bytes_written_to_efz
# - x_envoy_downstream_connection_termination_bytes_written_to_eg
# - x_envoy_downstream_connection_termination_bytes_written_to_egg
# - x_envoy_downstream_connection_termination_bytes_written_to_egged
# - x_envoy_downstream_connection_termination_bytes_written_to_eggs
# - x_envoy_downstream_connection_termination_bytes_written_to_eglantine
# - x_envoy_downstream_connection_termination_bytes_written_to_ego
# - x_envoy_downstream_connection_termination_bytes_written_to_egomaniac
# - x_envoy_downstream_connection_termination_bytes_written_to_egotism
# - x_envoy_downstream_connection_termination_bytes_written_to_egregious
# - x_envoy_downstream_connection_termination_bytes_written_to_eh
# - x_envoy_downstream_connection_termination_bytes_written_to_eh-
# - x_envoy_downstream_connection_termination_bytes_written_to_ehe
# - x_envoy_downstream_connection_termination_bytes_written_to_ehem
# - x_envoy_downstream_connection_termination_bytes_written_to_ehes
# - x_envoy_downstream_connection_termination_bytes_written_to_ehf
# - x_envoy_downstream_connection_termination_bytes_written_to_ehg
# - x_envoy_downstream_connection_termination_bytes_written_to_ehh
# - x_envoy_downstream_connection_termination_bytes_written_to_ehi
# - x_envoy_downstream_connection_termination_bytes_written_to_ehj
# - x_envoy_downstream_connection_termination_bytes_written_to_ehk
# - x_envoy_downstream_connection_termination_bytes_written_to_ehl
# - x_envoy_downstream_connection_termination_bytes_written_to_ehm
# - x_envoy_downstream_connection_termination_bytes_written_to_ehn
# - x_envoy_downstream_connection_termination_bytes_written_to_eho
# - x_envoy_downstream_connection_termination_bytes_written_to_ehp
# - x_envoy_downstream_connection_termination_bytes_written_to_ehq
# - x_envoy_downstream_connection_termination_bytes_written_to_ehr
# - x_envoy_downstream_connection_termination_bytes_written_to_ehs
# - x_envoy_downstream_connection_termination_bytes_written_to_eht
# - x_envoy_downstream_connection_termination_bytes_written_to_ehu
# - x_envoy_downstream_connection_termination_bytes_written_to_ehv
# - x_envoy_downstream_connection_termination_bytes_written_to_ehw
# - x_envoy_downstream_connection_termination_bytes_written_to_ehx
# - x_envoy_downstream_connection_termination_bytes_written_to_ehy
# - x_envoy_downstream_connection_termination_bytes_written_to_ehz
# - x_envoy_downstream_connection_termination_bytes_written_to_ei
# - x_envoy_downstream_connection_termination_bytes_written_to_eid
# - x_envoy_downstream_connection_termination_bytes_written_to_eight
# - x_envoy_downstream_connection_termination_bytes_written_to_eights
#