[Yandex Cloud documentation](../../index.md) > [Yandex Managed Service for MySQL®](../index.md) > [Step-by-step guides](index.md) > Logs and monitoring > Viewing cluster logs

# Viewing MySQL® cluster logs

Managed Service for MySQL® allows you to [get a cluster log snippet](#get-log) for the selected time period and [view logs in real time](#get-log-stream).

{% note info %}

Cluster logs are stored for 45 days.

{% endnote %}

## Getting a cluster log {#get-log}

{% list tabs group=instructions %}

- Management console {#console}

    1. Navigate to **Managed Service for&nbsp;MySQL**.
    1. Click the name of your cluster and select the ![image](../../_assets/console-icons/receipt.svg) **Logs** tab.
    1. Specify a time period for the log entries you want to view by entering it manually or selecting it in the calendar using the date input field.
    1. Select the type of events to display. The default type is `MYSQL_ERROR`.
    1. Specify the hosts and logging level in the row with the date input field, if required.

    You will see a list of log entries for the chosen time period. To see details of a specific event, click its entry in the list.

    If the list is too long to display all entries at once, click **Load more** at the end of the list.

- CLI {#cli}

    If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../cli/quickstart.md#install).

    The folder used by default is the one specified when [creating](../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

    1. See the description of the CLI command for viewing cluster logs:

        ```bash
        yc managed-mysql cluster list-logs --help
        ```

    1. Run the following command to get cluster logs (our example only shows some of the available parameters):

        ```bash
        yc managed-mysql cluster list-logs <cluster_name_or_ID> \
           --limit <entry_number_limit> \
           --format <output_format> \
           --service-type <service_type> \
           --columns <column_list> \
           --filter <filter_settings> \
           --since <time_range_start> \
           --until <time_range_end>
        ```

        Where:

        * `--limit`: limits on the number of entries to output.
        * `--format`: Format for log entries (`text`, `yaml`, `json`, or `json-rest`).
        * `--service-type`: Service type for log entries. Possible values are `mysql-error`, `mysql-general`, `mysql-slow-query`, and `mysql-audit`.
        * `--columns`: List of data columns:

            * `hostname`: [Host name](hosts.md#list-hosts).
            * `id`: Request ID.
            * `message`: Message output by the service.
            * `status`: Message status, e.g., `Note` or `Warning`.

            {% note info %}

            This example includes only the essential columns. The complete list of columns depends on the selected `--service-type`.

            {% endnote %}

            To output separate columns, provide the `--format` parameter and specify the output format (`yaml`, `json`, or `json-rest`). Columns are not supported for `text` output format (default).

        * `--filter`: Record filter settings, e.g., `message.hostname='node1.mdb.yandexcloud.net'`.
        * `--since`: Left boundary of a time range in [RFC-3339](https://www.ietf.org/rfc/rfc3339.html), `HH:MM:SS` format or a time interval relative to the current time. Examples: `2006-01-02T15:04:05Z`, `15:04:05`, `2h`, `3h30m ago`.
        * `--until`: right boundary of a time range, the format is similar to that of `--since`.

    You can get the cluster name and ID with the [list of clusters in the folder](cluster-list.md#list-clusters).

- REST API {#api}

    1. [Get an IAM token for API authentication](../api-ref/authentication.md) and put it into an environment variable:

        ```bash
        export IAM_TOKEN="<IAM_token>"
        ```

    1. Call the [Cluster.listLogs](../api-ref/Cluster/listLogs.md) method, e.g., via the following [cURL](https://curl.se/) request:

        ```bash
        curl \
            --request GET \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>:logs' \
            --url-query serviceType=<service_type> \
            --url-query columnFilter=<column_list> \
            --url-query fromTime=<time_range_start> \
            --url-query toTime=<time_range_end>
        ```

        Where:

        * `serviceType`: Type of the service for which you want to get logs:

            * `MYSQL_ERROR`: Log of errors related to starting, running, and stopping MySQL® instances.
            * `MYSQL_GENERAL`: Log of client connections and queries.
            
                It is disabled by default. To enable it, change the [General log](../concepts/settings-list.md#setting-general-log) value when [updating the MySQL® settings](update.md#change-mysql-config).
            
            * `MYSQL_SLOW_QUERY`: Slow query log.
            
                It is disabled by default. To enable it, change the [Slow query log](../concepts/settings-list.md#setting-slow-query-log) value when [updating the MySQL® settings](update.md#change-mysql-config). See also the [Log slow filter](../concepts/settings-list.md#setting-log-slow-filter), [Log slow rate limit](../concepts/settings-list.md#setting-log-slow-rate-limit), [Log slow rate type](../concepts/settings-list.md#setting-log-slow-rate-type), [Log slow sp statements](../concepts/settings-list.md#setting-log-slow-sp-statements), and [Slow query log always write time](../concepts/settings-list.md#setting-slow-query-log-always-write-time) settings.
            
            * `MYSQL_AUDIT`: Audit log.
            
                It is disabled by default. To enable it, change the [Audit log](../concepts/settings-list.md#setting-audit-log) value when [updating the MySQL® settings](update.md#change-mysql-config).

        * `columnFilter`: List of data columns:

            * `hostname`: [Host name](hosts.md#list).
            * `id`: Query ID.
            * `message`: Message output by the service.
            * `status`: Message status, e.g., `Note` or `Warning`.
            * `raw`: Raw data for all columns.

            {% note info %}

            This example includes only the essential columns. The complete list of columns depends on the selected `serviceType`.

            {% endnote %}

        * `fromTime`: Start of the time range in [RFC-3339](https://www.ietf.org/rfc/rfc3339.html) format, e.g., `2024-09-18T15:04:05Z`.
        * `toTime`: End of the time range in the same format as `fromTime`.

        You can get the cluster ID with the [list of clusters in the folder](cluster-list.md#list-clusters).

  1. Check the [server response](../api-ref/Cluster/listLogs.md#yandex.cloud.mdb.mysql.v1.ListClusterLogsResponse) to make sure your request was successful.

- gRPC API {#grpc-api}

    1. [Get an IAM token for API authentication](../api-ref/authentication.md) and put it into an environment variable:

        ```bash
        export IAM_TOKEN="<IAM_token>"
        ```

    1. Clone the [cloudapi](https://github.com/yandex-cloud/cloudapi) repository:
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Below, we assume that the repository contents reside in the `~/cloudapi/` directory.
    1. Call the [ClusterService/ListLogs](../api-ref/grpc/Cluster/listLogs.md) method, e.g., via the following [gRPCurl](https://github.com/fullstorydev/grpcurl) request:

        ```bash
        grpcurl \
          -format json \
          -import-path ~/cloudapi/ \
          -import-path ~/cloudapi/third_party/googleapis/ \
          -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \
          -rpc-header "Authorization: Bearer $IAM_TOKEN" \
          -d '{
                "cluster_id": "<cluster_ID>",
                "service_type": "<service_type>",
                "column_filter": [
                  "<column_1>", "<column_2>", ..., "<column_N>"
                ],
                "from_time": "<time_range_start>",
                "to_time": "<time_range_end>"
              }' \
          mdb.api.cloud.yandex.net:443 \
          yandex.cloud.mdb.mysql.v1.ClusterService.ListLogs
        ```

        Where:

        * `service_type`: Type of the service for which you want to get logs:

            * `MYSQL_ERROR`: Log of errors related to starting, running, and stopping MySQL® instances.
            * `MYSQL_GENERAL`: Log of client connections and queries.
            
                It is disabled by default. To enable it, change the [General log](../concepts/settings-list.md#setting-general-log) value when [updating the MySQL® settings](update.md#change-mysql-config).
            
            * `MYSQL_SLOW_QUERY`: Slow query log.
            
                It is disabled by default. To enable it, change the [Slow query log](../concepts/settings-list.md#setting-slow-query-log) value when [updating the MySQL® settings](update.md#change-mysql-config). See also the [Log slow filter](../concepts/settings-list.md#setting-log-slow-filter), [Log slow rate limit](../concepts/settings-list.md#setting-log-slow-rate-limit), [Log slow rate type](../concepts/settings-list.md#setting-log-slow-rate-type), [Log slow sp statements](../concepts/settings-list.md#setting-log-slow-sp-statements), and [Slow query log always write time](../concepts/settings-list.md#setting-slow-query-log-always-write-time) settings.
            
            * `MYSQL_AUDIT`: Audit log.
            
                It is disabled by default. To enable it, change the [Audit log](../concepts/settings-list.md#setting-audit-log) value when [updating the MySQL® settings](update.md#change-mysql-config).

        * `column_filter`: List of data columns:

            * `hostname`: [Host name](hosts.md#list).
            * `id`: Query ID.
            * `message`: Message output by the service.
            * `status`: Message status, e.g., `Note` or `Warning`.
            * `raw`: Raw data for all columns.

            {% note info %}

            This example includes only the essential columns. The complete list of columns depends on the selected `service_type`.

            {% endnote %}

        * `from_time`: Start of the time range in [RFC-3339](https://www.ietf.org/rfc/rfc3339.html) format, e.g., `2024-09-18T15:04:05Z`.
        * `to_time`: End of the time range in the same format as `from_time`.

        You can get the cluster ID with the [list of clusters in the folder](cluster-list.md#list-clusters).

    1. Check the [server response](../api-ref/grpc/Cluster/listLogs.md#yandex.cloud.mdb.mysql.v1.ListClusterLogsResponse) to make sure your request was successful.

{% endlist %}

## Getting a cluster log stream {#get-log-stream}

This method allows you to stream cluster logs in real time.

{% list tabs group=instructions %}

- CLI {#cli}

    If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../cli/quickstart.md#install).

    The folder used by default is the one specified when [creating](../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

    To view cluster logs in real time, run this command:

    ```bash
    yc managed-mysql cluster list-logs <cluster_name_or_ID> --follow
    ```

    You can get the cluster name and ID with the [list of clusters in the folder](cluster-list.md#list-clusters).

- REST API {#api}

    1. [Get an IAM token for API authentication](../api-ref/authentication.md) and put it into an environment variable:

        ```bash
        export IAM_TOKEN="<IAM_token>"
        ```

    1. Call the [Cluster.streamLogs](../api-ref/Cluster/streamLogs.md) method, e.g., via the following [cURL](https://curl.se/) request:

        ```bash
        curl \
            --request GET \
            --header "Authorization: Bearer $IAM_TOKEN" \
            --url 'https://mdb.api.cloud.yandex.net/managed-mysql/v1/clusters/<cluster_ID>:stream_logs' \
            --url-query serviceType=<service_type> \
            --url-query columnFilter=<column_list>
        ```

        Where:

        * `serviceType`: Type of the service for which you want to get logs:

            * `MYSQL_ERROR`: Log of errors related to starting, running, and stopping MySQL® instances.
            * `MYSQL_GENERAL`: Log of client connections and queries.
            
                It is disabled by default. To enable it, change the [General log](../concepts/settings-list.md#setting-general-log) value when [updating the MySQL® settings](update.md#change-mysql-config).
            
            * `MYSQL_SLOW_QUERY`: Slow query log.
            
                It is disabled by default. To enable it, change the [Slow query log](../concepts/settings-list.md#setting-slow-query-log) value when [updating the MySQL® settings](update.md#change-mysql-config). See also the [Log slow filter](../concepts/settings-list.md#setting-log-slow-filter), [Log slow rate limit](../concepts/settings-list.md#setting-log-slow-rate-limit), [Log slow rate type](../concepts/settings-list.md#setting-log-slow-rate-type), [Log slow sp statements](../concepts/settings-list.md#setting-log-slow-sp-statements), and [Slow query log always write time](../concepts/settings-list.md#setting-slow-query-log-always-write-time) settings.
            
            * `MYSQL_AUDIT`: Audit log.
            
                It is disabled by default. To enable it, change the [Audit log](../concepts/settings-list.md#setting-audit-log) value when [updating the MySQL® settings](update.md#change-mysql-config).

        * `columnFilter`: List of output columns:

            * `hostname`: [Host name](hosts.md#list-hosts).
            * `id`: Request ID.
            * `message`: Message output by the service.
            * `status`: Message status, e.g., `Note` or `Warning`.
            * `raw`: Raw data for all columns.

            {% note info %}

            This example includes only the essential columns. The complete list of columns depends on the selected `serviceType`.

            {% endnote %}

        You can get the cluster ID with the [list of clusters in the folder](cluster-list.md#list-clusters).

    1. View the [server response](../api-ref/Cluster/streamLogs.md#yandex.cloud.mdb.mysql.v1.StreamLogRecord) to make sure your request was successful.

        Once you launch the command, it will continue running, displaying new logs in its output in real time.

- gRPC API {#grpc-api}

    1. [Get an IAM token for API authentication](../api-ref/authentication.md) and put it into an environment variable:

        ```bash
        export IAM_TOKEN="<IAM_token>"
        ```

    1. Clone the [cloudapi](https://github.com/yandex-cloud/cloudapi) repository:
       
       ```bash
       cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
       ```
       
       Below, we assume that the repository contents reside in the `~/cloudapi/` directory.
    1. Call the [ClusterService/StreamLogs](../api-ref/grpc/Cluster/streamLogs.md) method, e.g., via the following [gRPCurl](https://github.com/fullstorydev/grpcurl) request:

        ```bash
        grpcurl \
            -format json \
            -import-path ~/cloudapi/ \
            -import-path ~/cloudapi/third_party/googleapis/ \
            -proto ~/cloudapi/yandex/cloud/mdb/mysql/v1/cluster_service.proto \
            -rpc-header "Authorization: Bearer $IAM_TOKEN" \
            -d '{
                  "cluster_id": "<cluster_ID>",
                  "service_type": "<service_type>",
                  "column_filter": [
                    "<column_1>", "<column_2>", ..., "<column_N>"
                  ]
                }' \
            mdb.api.cloud.yandex.net:443 \
            yandex.cloud.mdb.mysql.v1.ClusterService.StreamLogs
        ```

        Where:

        * `service_type`: Type of the service for which you want to get logs:

            * `MYSQL_ERROR`: Log of errors related to starting, running, and stopping MySQL® instances.
            * `MYSQL_GENERAL`: Log of client connections and queries.
            
                It is disabled by default. To enable it, change the [General log](../concepts/settings-list.md#setting-general-log) value when [updating the MySQL® settings](update.md#change-mysql-config).
            
            * `MYSQL_SLOW_QUERY`: Slow query log.
            
                It is disabled by default. To enable it, change the [Slow query log](../concepts/settings-list.md#setting-slow-query-log) value when [updating the MySQL® settings](update.md#change-mysql-config). See also the [Log slow filter](../concepts/settings-list.md#setting-log-slow-filter), [Log slow rate limit](../concepts/settings-list.md#setting-log-slow-rate-limit), [Log slow rate type](../concepts/settings-list.md#setting-log-slow-rate-type), [Log slow sp statements](../concepts/settings-list.md#setting-log-slow-sp-statements), and [Slow query log always write time](../concepts/settings-list.md#setting-slow-query-log-always-write-time) settings.
            
            * `MYSQL_AUDIT`: Audit log.
            
                It is disabled by default. To enable it, change the [Audit log](../concepts/settings-list.md#setting-audit-log) value when [updating the MySQL® settings](update.md#change-mysql-config).

        * `column_filter`: List of output columns:

            * `hostname`: [Host name](hosts.md#list-hosts).
            * `id`: Request ID.
            * `message`: Message output by the service.
            * `status`: Message status, e.g., `Note` or `Warning`.
            * `raw`: Raw data for all columns.

            {% note info %}

            This example includes only the essential columns. The complete list of columns depends on the selected `service_type`.

            {% endnote %}

        * `from_time`: Start of the time range in [RFC-3339](https://www.ietf.org/rfc/rfc3339.html) format, e.g., `2024-09-18T15:04:05Z`.
        * `to_time`: End of the time range in the same format as `from_time`.

        You can get the cluster ID with the [list of clusters in the folder](cluster-list.md#list-clusters).

    1. View the [server response](../api-ref/grpc/Cluster/streamLogs.md#yandex.cloud.mdb.mysql.v1.StreamLogRecord) to make sure your request was successful.

        Once you launch the command, it will continue running, displaying new logs in its output in real time.

{% endlist %}