Todos os produtos
Search
Central de documentação

Simple Log Service:Exclusão lógica no Simple Log Service

Última atualização: Jul 03, 2026

O Simple Log Service oferece suporte à exclusão lógica, recurso que marca os dados de log para remoção em vez de excluí-los imediata e permanentemente.

Informações básicas

Em ambientes orientados por dados, logs e informações de observabilidade são ativos essenciais para as empresas, mas também trazem desafios de gerenciamento, conformidade e segurança. Para resolver essas questões, o Simple Log Service (SLS) disponibiliza a exclusão lógica: um mecanismo rastreável que adiciona uma camada de proteção ao seu framework de segurança e conformidade de dados.

Como funciona

A exclusão lógica marca os dados para remoção em vez de apagá-los. Isso elimina os registros logicamente, mantendo o armazenamento físico intacto. O fluxo de trabalho é o seguinte:

  1. Iniciar uma tarefa de exclusão: Inicie uma tarefa de exclusão assíncrona usando um SDK ou o console. Especifique um intervalo de tempo e as condições de consulta.

  2. Marcação precisa: O serviço de backend do SLS localiza todas as entradas de log correspondentes com base nas condições de consulta definidas. Em vez de excluir fisicamente os dados, o serviço adiciona um marcador de exclusão interno e invisível a cada entrada.

  3. Transparência na consulta: Após a marcação, todas as solicitações de consulta regulares, como GetLogs, GetHistograms e consultas de análise SQL, filtram automaticamente esses dados. Assim, os dados parecem excluídos para seus aplicativos e usuários.

  4. Retenção e recuperação: Os dados marcados permanecem armazenados fisicamente, mas ficam inacessíveis para consultas. Atualmente, não há suporte para recuperação de dados.

  5. Exclusão permanente: Quando o período de retenção do Logstore expira, um mecanismo de limpeza do SLS executa uma exclusão física irreversível dos dados para liberar espaço de armazenamento.

Casos de uso

Ao marcar dados para exclusão em vez de apagá-los imediatamente, a exclusão lógica ajuda a resolver os seguintes desafios de gerenciamento de dados:

  • Requisitos de conformidade e auditoria

    • Cenário: Regulamentações financeiras ou o GDPR exigem que as empresas excluam dados sob demanda e mantenham registros de auditoria das operações de exclusão.

    • Implementação: As operações de exclusão lógica geram logs do sistema que registram o horário da exclusão, o operador e o escopo dos dados, atendendo aos requisitos de auditoria e conformidade.

  • Gerenciamento de dados em ambientes de desenvolvimento e teste

    • Cenário: Uma equipe de testes precisa limpar regularmente dados antigos para preparar novos testes de estresse.

    • Implementação: Exclua logicamente dados específicos em lotes. Essa abordagem preserva a estrutura e a configuração do Logstore, evitando custos de recriação.

  • Limpeza de dados incorretos

    • Cenário: Uma falha online causa a coleta de dados anormais, afetando a precisão da análise.

    • Implementação: Isole e marque rapidamente os dados incorretos para garantir que as visualizações de negócios contenham apenas dados de alta qualidade. Os dados brutos são retidos para solução de problemas posterior.

A exclusão lógica funciona em conjunto com outros recursos de segurança e conformidade do Simple Log Service, como criptografia no lado do servidor e controle refinado de permissões, para atender às necessidades de governança de dados corporativos.

Precauções

  1. Custos de armazenamento: Dados excluídos logicamente continuam a ocupar espaço de armazenamento e gerar cobranças durante o período de retenção. A exclusão física ocorre apenas quando o período de retenção do Logstore expira.

  2. Precisão da consulta: Consulte antes de excluir. Antes da exclusão, execute uma consulta usando exatamente o mesmo intervalo de tempo e instrução de consulta. Visualize os dados a serem excluídos para confirmar se estão corretos.

  3. Não é possível consultar ou analisar logs excluídos logicamente. Essa restrição aplica-se a recursos como consulta, análise SQL, ScheduledSQL e alertas. Operações de processamento de fluxo, incluindo consumo, transformação de dados e envio, não são afetadas.

  4. A exclusão lógica é irreversível. Logs excluídos não podem ser recuperados.

Regiões suportadas

Encontre o endpoint de serviço da região do seu Project na página de visão geral dele. Para obter o ID de cada região, consulte Endpoints.

Permissões

  • Se você usar sua conta Alibaba Cloud, terá todas as permissões por padrão e poderá gerenciar Projects diretamente.

  • Caso utilize um usuário RAM, solicite as permissões necessárias ao proprietário da conta Alibaba Cloud. O Simple Log Service fornece os dois tipos de políticas de sistema a seguir:

    • Políticas de sistema: Concedem permissões amplas. Não é possível modificar o conteúdo dessas políticas, mas elas são simples de configurar.

      • AliyunLogFullAccess: Concede permissões totais de gerenciamento para o Simple Log Service.

      • AliyunLogReadOnlyAccess: Concede permissões somente leitura para o Simple Log Service.

    • Políticas personalizadas: Recomendamos seguir o princípio do menor privilégio. Conceda apenas as permissões mínimas necessárias para pessoal confiável ou serviços automatizados.

      O código a seguir apresenta um exemplo de política personalizada:

      {
        "Version": "1",
        "Statement": [
          {
            "Action": [
              "log:DeleteLogStoreLogs",
              "log:GetDeleteLogStoreLogsTask",
              "log:ListDeleteLogStoreLogsTasks"
            ],
            "Resource": [
              "acs:log:*:*:project/ProjectName/logstore/LogstoreName"
            ],
            "Effect": "Allow"
          }
        ]
      }

Operações no console

  1. Faça login no console do Simple Log Service. Na seção Projects, clique em projeto desejado.

  2. Na aba Log Storage > Logstores, clique em logstore desejado.

  3. Na página Search & Analysis do Logstore, insira uma instrução de consulta e selecione um intervalo de tempo. Na aba Raw Log, clique em image > Soft Delete Log.

  4. Na caixa de diálogo Soft Delete Log, leia atentamente as informações e clique em Confirm. Após a exclusão, os logs deixam de ser visíveis.

  5. Após a conclusão da exclusão, na aba Raw Log, clique em image > Soft Delete Task. Na lista Soft Delete Task, visualize o histórico de tarefas de exclusão.

Operações via SDK

Python

  1. Use pip show aliyun-log-python-sdk para verificar a versão do aliyun-log-python-sdk.

    A versão do aliyun-log-python-sdk deve ser 0.9.28 ou superior. Se sua versão for anterior, use o comando pip install -U aliyun-log-python-sdk para atualizar o SDK.

  2. Envie uma tarefa de exclusão lógica.

    DeleteLogsRequest possui os seguintes parâmetros:

    Parâmetro

    Exemplo

    # Import necessary libraries
    import time
    from aliyun.log import LogClient, DeleteLogsRequest, DeleteLogsResponse
    
    def execute_soft_delete(client: LogClient, project: str, logstore: str, from_time: int, to_time: int, query: str) -> str:
        """
        Executes an asynchronous soft deletion task.
    
        :param client: An initialized Simple Log Service client instance.
        :param project: Your Simple Log Service Project name.
        :param logstore: Your Logstore name.
        :param from_time: The start timestamp of the deletion range (in seconds).
        :param to_time: The end timestamp of the deletion range (in seconds).
        :param query: The index-only search statement used to filter logs for deletion. SQL, scan, and phrase queries are not supported.
        :return: The task ID of the asynchronous deletion task, used to query the task status later.
        """
        print(f"Preparing to perform a soft deletion in Logstore '{logstore}' of Project '{project}'...")
        print(f"Time range: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(from_time))} -> {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(to_time))}")
        print(f"Deletion condition (Query): {query}")
    
        # 1. Construct the deletion request object.
        request = DeleteLogsRequest(project, logstore, from_time, to_time, query=query)
    
        # 2. Initiate the asynchronous deletion request.
        try:
            res: DeleteLogsResponse = client.delete_logs(request)
            
            # 3. Print the request information and the returned task ID.
            print("\n--- Request Receipt ---")
            res.log_print()
            task_id = res.get_taskid()
            print(f"✅ Soft deletion task submitted successfully! Request ID: {res.get_request_id()}, Task ID: {task_id}")
            return task_id
        except Exception as e:
            print(f"❌ Failed to submit soft deletion task: {e}")
            return ""
    
    # --- How to call ---
    # client = LogClient(...) # Client initialization process is omitted here.
    
    # project_name = "my-prod-app"
    # logstore_name = "nginx-access-log"
    # # Scenario: Delete access logs from the last 24 hours with a status code of 500 from a specific IP address.
    # start_time = int(time.time()) - 86400 
    # end_time = int(time.time())
    # delete_query = "__source__: 123.123.XXX.XXX and status: 500"
    
    # task_id = execute_soft_delete(client, project_name, logstore_name, start_time, end_time, delete_query)
    # if task_id:
    #     print(f"\nPlease use Task ID '{task_id}' to query the task execution status.")
    

    project String (Obrigatório)

    Nome do projeto. No Simple Log Service, o projeto isola os recursos de diferentes usuários e controla o acesso a recursos específicos. Consulte Gerenciar projetos.

    LogStore String (Obrigatório)

    Nome do logstore. No Simple Log Service, o logstore serve para coletar, armazenar e consultar logs. Consulte Gerenciar Logstores.

    fromTime int Obrigatório

    Início do intervalo de tempo da consulta, especificado como um timestamp Unix.

    toTime int (Obrigatório)

    Fim do intervalo de tempo da consulta, especificado como um timestamp Unix.

    query String (Obrigatório)

    Instrução de pesquisa ou análise. Para mais informações, consulte Visão geral de consulta e análise.

    Tenha cuidado ao definir "*" ou "level: ERROR". Essas configurações podem causar a exclusão acidental de uma grande quantidade de dados.
  3. Verifique o status da tarefa periodicamente.

    Este bloco de código verifica continuamente o progresso da tarefa até sua conclusão ou timeout. Trata-se de uma etapa fundamental para garantir a execução bem-sucedida da operação de exclusão.

    delete_logs é uma API assíncrona. Uma chamada bem-sucedida indica apenas que a tarefa foi aceita. Use o task_id retornado para consultar o status final da tarefa.

    from aliyun.log import GetDeleteLogsStatusRequest, GetDeleteLogsStatusResponse
    def wait_for_task_completion(client: LogClient, project: str, logstore: str, task_id: str, timeout_seconds: int = 300):
        """Waits for the soft deletion task to complete by polling."""
        start_time = time.time()
        while time.time() - start_time < timeout_seconds:
            request = GetDeleteLogsStatusRequest(project, logstore, task_id)
            try:
                res: GetDeleteLogsStatusResponse = client.get_delete_logs_status(request)
                progress = res.get_process()
                print(f"Querying status of task '{task_id}'... Progress: {progress:.2f}%")
                if progress >= 100.0:
                    print("✅ Task completed!")
                    return True
                time.sleep(2)  # Avoid polling too frequently.
            except Exception as e:
                print(f"❌ Failed to query task status: {e}")
                return False
        print(f"⌛️ Task timed out (exceeded {timeout_seconds} seconds). Please retry later or check the task status.")
        return False
    # --- How to call ---
    # task_id = execute_soft_delete(...)
    # if task_id:
    #     wait_for_task_completion(client, project_name, logstore_name, task_id)
    
  4. Audite e gerencie tarefas (visualize tarefas históricas).

    Esse recurso é crucial para auditorias de segurança e gerenciamento operacional, pois fornece um histórico completo de todas as operações de exclusão.
    from aliyun.log import ListDeleteLogsTasksRequest
    def list_all_delete_tasks(client: LogClient, project: str, logstore: str):
        """Lists the history of all soft deletion tasks for a specified Logstore."""
        print(f"\nListing the history of soft deletion tasks for Logstore '{logstore}' in Project '{project}'...")
        request = ListDeleteLogsTasksRequest(project=project, logstore=logstore)
        try:
            res = client.list_delete_logs_tasks(request)
            print("✅ Task list retrieved successfully!")
            res.log_print() # log_print() prints all task details in a readable format.
        except Exception as e:
            print(f"❌ Failed to retrieve task list: {e}")