Yandex Cloud
Search
Discuss with expertTry it for free
  • Customer Stories
  • Documentation
  • Blog
  • All Services
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Cloud Desktop
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • Serverless Integrations
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • System Status
  • Marketplace
    • Featured
    • Infrastructure & Network
    • Data Platform
    • AI for business
    • Security
    • DevOps tools
    • Serverless
    • Monitoring & Resources
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
    • Price calculator
    • Pricing plans
  • Customer Stories
  • Documentation
  • Blog
© 2026 Direct Cursus Technology L.L.C.
Yandex Cloud Stackland
  • What's new
  • Installation
    • All tutorials
    • Installing Stackland on Yandex BareMetal
    • Installing Stackland on Yandex BareMetal via PXE
    • Installing Stackland on Yandex Cloud VMs
    • Setting up external access to a pod in a cluster
    • All guides
    • Projects
    • Resource model
    • Scaling a cluster
    • Licensing
      • Overview
      • Certificate Manager
      • DNS
      • IAM
      • Logging Stack
      • Managed Service for Apache Kafka®
      • Managed Service for PostgreSQL
      • Managed Service for ClickHouse®
      • Iceberg REST Catalog
      • Managed Service for Trino
      • YTsaurus
      • DataLens
      • Monitoring
      • Object Storage
      • Disk subsystem
      • NVIDIA® GPU support
      • Policy Manager
      • Secrets Store
      • SpeechSense
  • Access management
  • Pricing policy
  • Diagnostics and troubleshooting

In this article:

  • Types of collected logs
  • Viewing logs in Grafana
  • Storing logs
  • Managing tenant access
  • Log delivery
  • Additional outputs
  • Configuration
  • Component status
  1. Concepts
  2. Components
  3. Logging Stack

Logging Stack

Written by
Yandex Cloud
Updated at August 31, 2026
View in Markdown
  • Types of collected logs
  • Viewing logs in Grafana
  • Storing logs
  • Managing tenant access
  • Log delivery
    • Additional outputs
  • Configuration
    • Component status

Stackland collects and stores cluster logs using these open-source tools:

  • Loki: Centralized log storage.
  • Fluent Bit: Log shipping agent.
  • Grafana: Log viewing and analyzing interface.

You can manage log storage and shipping via the LoggingConfig custom resource.

Types of collected logsTypes of collected logs

By default, Fluent Bit sends two log streams to Loki:

  • Kubernetes API audit logs from /var/log/audit/kube/kube-apiserver.log to the audit tenant.
  • Container logs from the stackland-* namespace to the stackland tenant.

Container logs from other namespaces are not sent to Loki.

In Grafana, each tenant corresponds to a separate data source:

Data source Tenant Content
audit-logs audit Kubernetes API audit logs
stackland-logs stackland Logs of platform components from stackland-* namespaces
audit-logs-legacy audit Audit logs from singleBinary when both modes are used simultaneously
stackland-logs-legacy stackland Platform component logs from singleBinary when both modes are used simultaneously

Viewing logs in GrafanaViewing logs in Grafana

The Grafana interface is available at https://grafana.sys.<cluster domain>. To sign in, click Sign in with Stackland Auth.

Open the Explore section and select the stackland-logs or audit-logs data source. If both singleBinary and simpleScalable are enabled at the same time, new logs are written to these sources, and the history from singleBinary remains available through stackland-logs-legacy and audit-logs-legacy. The Logs app is also available to system logs; it uses the stackland-logs source.

By default, queries to both tenants go through an authorization proxy. Access is allowed to the stackland-cluster-admins group members. You can edit the list of groups in the tenantProxy.adminGroups setting. The Viewer or Editor roles in Grafana alone do not grant access to logs.

Storing logsStoring logs

Loki supports two deployment modes:

  • singleBinary: One Loki instance with data on a PVC.
  • simpleScalable: Scalable configuration with the writer, reader, and backend components, storing data in internal S3. The Object Storage component must be enabled to use this mode.

At least one mode must be enabled. When switching between modes, you can temporarily enable them both simultaneously.

singleBinary configuration example:

logStorage:
  loki:
    singleBinary:
      enabled: true
      storage:
        storageClass: stackland-ssd
        size: 50Gi
      resources:
        requests:
          memory: 1Gi
          cpu: 500m
        limits:
          memory: 2Gi
          cpu: "1"
      limitsConfig:
        retentionPeriod: 30d
        maxLabelNamesPerSeries: 30
      compactor:
        retentionEnabled: true
        retentionDeleteDelay: 2h
  • storage.storageClass: StorageClass for the PVC. If not specified, the cluster's default StorageClass is used.
  • storage.size: PVC size.
  • resources: Loki resource requirements.
  • limitsConfig.retentionPeriod: Log retention.
  • limitsConfig.maxLabelNamesPerSeries: Maximum number of labels per series.
  • compactor.retentionEnabled: Enables deletion of expired data.
  • compactor.retentionDeleteDelay: Delay before data is deleted.

Managing tenant accessManaging tenant access

logStorage:
  loki:
    tenantProxy:
      enabled: true
      adminGroups:
        - stackland-cluster-admins
      replicas: 1
      resources:
        requests:
          cpu: 50m
          memory: 64Mi
        limits:
          cpu: 200m
          memory: 256Mi
  • enabled: Sends Grafana queries to Loki through the authorization proxy. By default, the proxy is enabled.
  • adminGroups: IAM groups whose members can query the audit and stackland tenants.
  • replicas: Number of proxy replicas.
  • resources: Proxy resource requirements.

If enabled: false, Grafana connects to Loki directly, without checking user groups.

Log deliveryLog delivery

logSender:
  fluentBit:
    logLevel: info
    sendToStacklandLogStorage: true
    flushInterval: 5s
    bufferSize: 5MB
    resources:
      requests:
        memory: 100Mi
        cpu: 100m
      limits:
        memory: 200Mi
        cpu: 200m
  • logLevel: Fluent Bit logging level: debug, info, warn, and error.
  • sendToStacklandLogStorage: Enables sending to Loki. The default value is true.
  • flushInterval: Interval for shipping accumulated logs.
  • bufferSize: Fluent Bit buffer size.
  • resources: Fluent Bit resource requirements.

Additional outputsAdditional outputs

In fluentBit.outputs, you can configure up to ten additional opensearch and stdout outputs. If sendToStacklandLogStorage: false, at least one additional output must be enabled.

Example of shipping logs to Loki and OpenSearch simultaneously:

logSender:
  fluentBit:
    sendToStacklandLogStorage: true
    outputs:
      - name: opensearch-main
        enabled: true
        type: opensearch
        match: "*"
        opensearch:
          host: opensearch.logging.svc.cluster.local
          port: 9200
          index: stackland-logs
          workers: 2
          retryLimit: 3

To connect using TLS and Basic Auth, you can use opensearch.tls.caSecret, opensearch.basicAuth.usernameSecret, and opensearch.basicAuth.passwordSecret. Secrets can reside in any namespace if it is specified in the link; the controller copies the required values to the stackland-logging namespace.

ConfigurationConfiguration

Full LoggingConfig example:

apiVersion: stackland.yandex.cloud/v1alpha1
kind: LoggingConfig
metadata:
  name: main # This is a required field you must set to `main`
spec:
  enabled: true
  settings:
    logStorage: # Log storage settings
      loki:
        singleBinary: # Loki in SingleBinary mode with PVC storage
          enabled: true
          storage:
            storageClass: stackland-ssd # If not specified, the cluster's default StorageClass is used
            size: 50Gi
          resources:
            requests:
              cpu: 500m
              memory: 1Gi
            limits:
              cpu: "1"
              memory: 2Gi
          limitsConfig:
            retentionPeriod: 30d
            maxLabelNamesPerSeries: 30
          compactor:
            retentionEnabled: true
            retentionDeleteDelay: 2h

        simpleScalable: # Loki in SimpleScalable mode with S3 storage
          enabled: false # To enable S3 mode, set to true and disable singleBinary
          writer:
            replicas: 3
            replicationFactor: 3
            storage:
              size: 10Gi
            resources:
              requests:
                cpu: 200m
                memory: 1Gi
              limits:
                memory: 2Gi
          reader:
            replicas: 2
            resources:
              requests:
                cpu: 200m
                memory: 512Mi
              limits:
                memory: 1Gi
          backend:
            replicas: 1
            storage:
              size: 10Gi
            resources:
              requests:
                cpu: 200m
                memory: 512Mi
              limits:
                memory: 1Gi
          limitsConfig:
            retentionPeriod: 30d
            maxLabelNamesPerSeries: 30
          compactor:
            retentionEnabled: true
            retentionDeleteDelay: 2h

        tenantProxy: # Proxy between Grafana and Loki to check access to tenant
          enabled: true
          adminGroups:
            - stackland-cluster-admins # Default group
          replicas: 1
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
            limits:
              cpu: 200m
              memory: 256Mi

    logSender: # Log delivery settings
      fluentBit:
        logLevel: info
        sendToStacklandLogStorage: true
        flushInterval: 5s
        bufferSize: 5MB
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 200m
            memory: 200Mi

Component statusComponent status

The status field of the resource displays:

  • datasourceConfigured: Loki data sources created in Grafana.
  • conditions: Readiness conditions for the component and probes for additional outputs.
  • message: Current component status.
  • observedGeneration: Last processed configuration version.

Was the article helpful?

Previous
IAM
Next
Managed Service for Apache Kafka®
© 2026 Direct Cursus Technology L.L.C.