This topic describes how to use Log Service to collect stdout and log files from application containers in an ACK Serverless cluster.
Prerequisites
An ACK Serverless cluster is created. For more information, see Create an ACK Serverless cluster.
Log Service is enabled for the ACK Serverless cluster. For more information, see Enable Log Service for an ACK Serverless cluster.
Step 1: Create an application and configure Log Service to collect the application logs
You can configure Log Service to collect log data from containers when you create an application. You can create applications from images or by using YALM templates.
Method 1: Create an application from an image and configure Log Service to collect application logs
Log on to the ACK console. In the left-side navigation pane, click Clusters.
On the Clusters page, click the name of the cluster that you want to manage and choose in the left-side navigation pane.
On the Deployments page, select a namespace from the Namespace drop-down list. Then, click Create from Image in the upper-right corner of the page.
On the Basic Information wizard page, set Name, Replicas, and Type. Then, click Next.
On the Container wizard page, set the parameters in the Log Service section.
NoteThe following table describes only the parameters related to Log Service. For more information about other application parameters, see Create a stateless application by using a Deployment.
Parameter
Description
Collection Configuration
Click Collection Configuration. Set Logstore and Log Path in Container (Can be set to stdout).
Logstore: the name of the Logstore that you want to use. The name can contain only lowercase letters, digits, and hyphens (-).
You can use this parameter to specify the Logstore that stores the collected log data. If the specified Logstore does not exist, the system automatically creates a Logstore in the Log Service project that is associated with the cluster.
Log Path in Container (Can be set to stdout): the path from which you want to collect log data. A value of /usr/local/tomcat/logs/catalina.*.log indicates that the log files of a Tomcat application are collected.
NoteIf you set the value to stdout, stdout and stderr are collected.
After you add a configuration entry, the system automatically creates a Logstore. By default, Logtail collects log data in simple mode. In this mode, log data is collected by line. To use more log collection methods, log on to the Log Service console and modify the log collection configurations of the project and Logstore. By default, the project uses k8s-log as the prefix.
Custom Tag
Click Custom Tag. Set Tag Key and Tag Value.
Each tag is a key-value pair that is appended to the collected log data. You can use custom tags to mark log data. For example, you can use a tag to denote the application version.
After the configuration is complete, click Next. For more information about how to set the remaining parameters, see Create a stateless application by using a Deployment.
Method 2: Create an application from a YAML template and configure Log Service to collect application logs
In the left-side navigation pane of the details page, choose .
On the Deployments page, select a namespace from the Namespace drop-down list. Then, click Create from YAML in the upper-right corner of the page.
On the Create page, select a template from the Sample Template drop-down list and modify the template content in the Template section based on your requirements
The syntax of the YAML template is the same as that of Kubernetes. You can use the
env
parameter to define log collection configurations and custom tags. You must also set thevolumeMounts
andvolumes
parameters. The following code block shows a sample YAML template of a pod:apiVersion: v1 kind: Pod metadata: name: my-demo spec: containers: - name: my-demo-app image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest' env: ######### Specify environment variables ########### - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 ######### Specify volume mounting parameters. ########### volumeMounts: - name: volumn-sls-mydemo mountPath: /var/log volumes: - name: volumn-sls-mydemo emptyDir: {}
You can add the following configurations based on your requirements:
NoteIf you have more requirements for log collection, see Step 2: Configure advanced settings in the env field.
Add log collection configurations and custom tags by using environment variables. All environment variables related to log collection must use
aliyun_logs_
as the prefix.Add log collection configurations in the following format:
- name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log
In the preceding example, two environment variables in the following format are added to the log collection configuration:
aliyun_logs_{key}
. The{keys}
of the environment variables arelog-stdout
andlog-varlog
.Environment variable
aliyun_logs_log-stdout
indicates that aLogstore
namedlog-stdout
is created to store thestdout
files collected from containers. The name of the collection configuration islog-stdout
. This way, the stdout of containers is collected to theLogstore
namedlog-stdout
.Environment variable
aliyun_logs_log-varlog
indicates that aLogstore
namedlog-varlog
is created to store the collected log files to the/var/log/*.log
path. The name of the collection configuration islog-varlog
. This way, text files of the/var/log/*.log
file are collected to theLogstore
namedlog-varlog
.
Add custom tags in the following format:
- name: aliyun_logs_mytag1_tags value: tag1=v1
After a tag is added, the tag is automatically appended to the log data that is collected from the container. The value of
mytag1
can contain only lowercase letters, digits, and hyphens (-).
If you specify a log path to collect log files other than
stdout
, you must set thevolumeMounts
parameter. In the preceding YAML template, the mountPath field in volumeMounts is set to/var/log
. This allows Logtail to collect log data from the/var/log/*.log
file.
After you configure the YAML template, click Create.
Step 2: Configure advanced settings in the env field
You can specify various environment variables to configure log collection. The following table describes the variables that are supported.
You cannot use environment variables to configure log collection in edge computing scenarios.
Variable | Description | Example | Considerations |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | This variable is optional. This variable is used to add tags to the collected log data. The value must be in the following format: {tag-key}={tag-value}. |
| - |
aliyun_logs_{key}_project | This variable is optional. This variable specifies a project in Log Service. The default project is the one that you specified when you created the cluster. |
| The project must be deployed in the same region as Logtail. |
aliyun_logs_{key}_logstore | This variable is optional. This variable specifies a Logstore in Log Service. By default, the Logstore is named {key}. |
| - |
aliyun_logs_{key}_shard | This variable is optional. This variable specifies the number of shards in the Logstore. Valid values: 1 to 10. Default value: 2. |
| - |
aliyun_logs_{key}_ttl | This variable is optional. This variable specifies the number of days for which log data is retained. Valid values: 1 to 3650.
|
| - |
aliyun_logs_{key}_machinegroup | This variable is optional. This variable specifies the node group in which the application is deployed. The default node group is the one in which Logtail is deployed. |
| - |
Scenario 1: Collect log data from multiple applications and store them in the same Logstore
In this scenario, set the aliyun_logs_{key}_logstore variable. The following example shows how to collect stdout from two applications and store the output in stdout-logstore.
The
{key}
of Application 1 is set toapp1-stdout
. The{key}
of Application 2 is set toapp2-stdout
.Configure the following environment variables for Application 1:
######### Specify environment variables. ########### - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore
Configure the following environment variables for Application 2:
######### Specify environment variables. ########### - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore
Scenario 2: Collect log data from different applications and store them in different projects
In this scenario, perform the following steps:
Create a machine group in each project and set the machine group ID in the following format: k8s-group-{cluster-id}, where
{cluster-id}
is the ID of the cluster. You can customize the machine group name.Specify the project, Logstore, and the machine group in the environment variables for each application. The name of the machine group is the same as that of the machine group that you created in the previous step.
In the following example, the {key} of Application 1 is set to
app1-stdout
. The {key} of Application 2 is set toapp2-stdout
.If the two applications are deployed in the same ACK cluster, you can use the same machine group for the applications.
Configure the following environment variables for Application 1:
######### Specify environment variables. ########### - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_project value: app1-project - name: aliyun_logs_app1-stdout_logstore value: app1-logstore - name: aliyun_logs_app1-stdout_machinegroup value: app1-machine-group
Configure the following environment variables for Application 2:
######### Specify environment variables for Application 2.########### - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_project value: app2-project - name: aliyun_logs_app2-stdout_logstore value: app2-logstore - name: aliyun_logs_app2-stdout_machinegroup value: app1-machine-group
Step 3: View log data
To view the collected log data in the ACK console, perform the following steps:
Log on to the ACK console. In the left-side navigation pane, click Clusters.
On the Clusters page, click the name of the cluster that you want to manage and choose in the left-side navigation pane.
On the Log Center page, click the Application Logs tab and specify the filter conditions. Then, click Select Logstore to view the logs of containers.