Viewing ClickHouse® cluster logs
Managed Service for ClickHouse® allows you to get a cluster log snippet for the selected period and view logs in real time.
Note
Cluster logs are kept for 30 days.
Getting cluster logs
- Navigate to the folder dashboard and select Managed Service for ClickHouse.
- Click the name of the cluster you need and select the
Logs tab. - Specify a time period for the log entries you want to view: enter it manually or select in the calendar using the date input field.
- 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 time period you specified. To view detailed information about an event, click the relevant entry in the list.
If there are too many entries and not all of them are displayed, click Load more at the end of the list.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
-
View the description of the CLI command for viewing cluster logs:
yc managed-clickhouse cluster list-logs --help -
Run this command to get cluster logs:
yc managed-clickhouse cluster list-logs <cluster_name_or_ID> \ --limit <entry_number_limit> \ --columns <list_of_data_columns> \ --filter <entry_filtration_settings> \ --since <time_range_start> \ --until <time_range_end>Where:
-
--limit: limits on the number of entries to output. --columns: List of output data columns:hostname: Host name.component: Type of component to log, e.g.,HTTP-Session.message: Message output by the component.query_id: Query ID.severity: Logging level, e.g.,Debug.thread: ID of the thread involved in query handling.
-
--filter: record filter settings, for example,message.hostname='node1.mdb.yandexcloud.net'. -
--since: Left boundary of a time range in RFC-3339 ,HH:MM:SSformat 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.
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.ListLogs method, e.g., via the following cURL
request:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<cluster_ID>:logs' \ --url-query serviceType=CLICKHOUSE \ --url-query columnFilter=<list_of_data_columns> \ --url-query fromTime=<time_range_start> \ --url-query toTime=<time_range_end>Where:
-
serviceType: Type of service to request logs for. The only valid value isCLICKHOUSE. -
columnFilter: List of output data columns:hostname: Host name.component: Type of component to log, Example:HTTP-Session.message: Message output by the component.query_id: Request ID.severity: Logging level, e.g.,Debug.thread: ID of the thread involved in query handling.
You can specify only one column in the
columnFilterparameter. If you want to filter logs by more than one column, provide a list of the columns in several parameters.
fromTime: Left boundary of a time range in RFC-3339 format, Example:2006-01-02T15:04:05Z.
toTime: End of the time range in the same format asfromTime.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService.ListLogs method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "service_type" : "CLICKHOUSE", "column_filter": [<list_of_data_columns>], "from_time": "<time_range_start>" \ "to_time": "<time_range_end>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.ListLogsWhere:
-
service_type: Type of service to request logs for. The only valid value isCLICKHOUSE. -
column_filter: List of output data columns:hostname: Host name.component: Type of component to log, Example:HTTP-Session.message: Message output by the component.query_id: Request ID.severity: Logging level, e.g.,Debug.thread: ID of the thread involved in query handling.
You can specify more than one column in the
column_filterparameter if you want to filter logs by multiple columns.
from_time: Left boundary of a time range in RFC-3339 format, Example:2006-01-02T15:04:05Z.
to_time: End of the time range in the same format asfrom_time.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
Getting a cluster log stream
This method allows you to get cluster logs in real time.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To view cluster logs in real time, run this command:
yc managed-clickhouse cluster list-logs <cluster_name_or_ID> --follow
You can get the cluster name and ID with the list of clusters in the folder.
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.StreamLogs method, e.g., via the following cURL
request:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<cluster_ID>:stream_logs' \ --url-query serviceType=CLICKHOUSE \ --url-query columnFilter=<list_of_data_columns> \ --url-query fromTime=<time_range_start> \ --url-query toTime=<time_range_end> \ --url-query filter=<log_filter>Where:
-
serviceType: Type of service to request logs for. The only valid value isCLICKHOUSE. -
columnFilter: List of output data columns:hostname: Host name.component: Type of component to log, Example:HTTP-Session.message: Message output by the component.query_id: Request ID.severity: Logging level, e.g.,Debug.thread: ID of the thread involved in query handling.
You can specify only one column in the
columnFilterparameter. If you want to filter logs by more than one column, provide a list of the columns in several parameters.
fromTime: Left boundary of a time range in RFC-3339 format, Example:2006-01-02T15:04:05Z.
-
toTime: End of the time range in the same format asfromTime.If you omit this parameter, new logs will be sent to the log stream as they arrive. Semantically, this behavior is similar to
tail -f. -
filter: Log filter. You can filter logs so that the stream contains only the logs you need.For more information about filters and their syntax, see the API reference.
Tip
A filter can contain quotation marks and other characters. Escape them if you need to.
Supported filters:
message.hostname: Filtering by host name.message.severity: Filtering by logging level.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it in an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume the repository contents are stored in the
~/cloudapi/directory. -
Call the ClusterService.StreamLogs method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "service_type" : "CLICKHOUSE", "column_filter": [<list_of_data_columns>], "from_time": "<time_range_start>", "to_time": "<time_range_end>", "filter": "<log_filter>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.StreamLogsWhere:
-
service_type: Type of service to request logs for. The only valid value isCLICKHOUSE. -
column_filter: List of output data columns:hostname: Host name.component: Type of component to log, Example:HTTP-Session.message: Message output by the component.query_id: Request ID.severity: Logging level, e.g.,Debug.thread: ID of the thread involved in query handling.
You can specify more than one column in the
column_filterparameter if you want to filter logs by multiple columns.
from_time: Left boundary of a time range in RFC-3339 format, Example:2006-01-02T15:04:05Z.
-
to_time: End of the time range in the same format asfrom_time.If you omit this parameter, new logs will be sent to the log stream as they arrive. Semantically, this behavior is similar to
tail -f. -
filter: Log filter. You can filter logs so that the stream contains only the logs you need.Tip
A filter can contain quotation marks and other characters. Escape them if you need to.
Supported filters:
message.hostname: Filtering by host name.message.severity: Filtering by logging level.
For more information about filters and their syntax, see the API reference.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
ClickHouse® is a registered trademark of ClickHouse, Inc