Usando um pipeline de OpenSearch ingestão com os serviços da Atlassian - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando um pipeline de OpenSearch ingestão com os serviços da Atlassian

Você pode usar os plug-ins de origem do Atlassian Jira e do Confluence para ingerir dados dos serviços da Atlassian em seu pipeline de ingestão. OpenSearch Essas integrações permitem que você crie uma base de conhecimentos unificada pesquisável sincronizando projetos do Jira e espaços do Confluence inteiros, mantendo a relevância em tempo real por meio de monitoramento contínuo e sincronização automática das atualizações.

Integrating with Jira

Transforme sua experiência no Jira com poderosos recursos de pesquisa contextual integrando seu conteúdo do Jira em. OpenSearch O plugin de origem Atlassian Jira da Data Prepper permite criar uma base de conhecimentos unificada e pesquisável sincronizando projetos inteiros do Jira, mantendo a relevância em tempo real por meio de monitoramento contínuo e sincronização automática de atualizações. Essa integração permite a sincronização de dados com opções flexíveis de filtragem por projetos, tipos de problemas e status específicos, garantindo que somente as informações necessárias sejam importadas.

Para garantir uma conectividade segura e confiável, o plug-in oferece suporte a vários métodos de autenticação, incluindo autenticação e OAuth2 autenticação básicas de chave de API, com a segurança adicional de gerenciar credenciais usando um segredo armazenado AWS Secrets Manager. Ele também conta com renovação automática de tokens para acesso ininterrupto, garantindo operação contínua. Baseada na API da Atlassian versão 2, essa integração permite que as equipes desbloqueiem informações valiosas de seus dados do Jira por meio dos recursos avançados OpenSearch de pesquisa.

Integrating with Confluence

Melhore os recursos de colaboração e gerenciamento de conhecimento da sua equipe integrando o conteúdo do Atlassian Confluence por OpenSearch meio do plug-in de origem Confluence do Data Prepper. Essa integração permite criar um repositório coletivo de conhecimentos, centralizado e pesquisável, melhorando a descoberta de informações e a produtividade da equipe. Ao sincronizar o conteúdo do Confluence e monitorar continuamente as atualizações, o plug-in garante que seu OpenSearch índice permaneça up-to-date abrangente.

A integração oferece opções flexíveis de filtragem, permitindo que você importe seletivamente conteúdo de espaços ou tipos de página específicos, adaptando o conteúdo sincronizado às necessidades da sua organização. O plug-in oferece suporte à chave básica de API e aos métodos de OAuth2 autenticação, com a opção de gerenciar credenciais com segurança por meio de. AWS Secrets Manager O atributo de renovação automática de tokens do plug-in garante acesso ininterrupto e operação sem falhas. Baseada na API Confluence da Atlassian, essa integração permite que as equipes aproveitem os recursos de pesquisa avançada OpenSearch do Confluence em todo o conteúdo do Confluence, aprimorando a acessibilidade e a utilização das informações na organização.

Pré-requisitos

Antes de criar seu pipeline OpenSearch de ingestão, conclua as seguintes etapas:

  1. Prepare as credenciais para seu site Jira escolhendo uma das seguintes opções. OpenSearch A ingestão requer apenas ReadOnly autorização para o conteúdo.

    1. Opção 1, chave de API: faça login na sua conta da Atlassian e use as informações do seguinte tópico para gerar a chave de API:

    2. Opção 2: OAuth2 — Faça login na sua conta Atlassian e use as informações em. Conectando um pipeline de OpenSearch ingestão da Amazon ao Atlassian Jira ou ao Confluence usando 2.0 OAuth

  2. Crie um segredo no AWS Secrets Manager para armazenar as credenciais criadas na etapa anterior. Faça as seguintes escolhas ao seguir o procedimento:

    • Em Tipo de segredo, escolha Outro tipo de segredo.

    • Em Pares de chave/valor, crie os seguintes pares, dependendo do tipo de autorização selecionado:

    API key
    { "username": user-name-usualy-email-id, "password": api-key }
    OAuth 2.0
    { "clientId": client-id "clientSecret": client-secret "accessKey": access-key "refreshKey": refresh-key }

    Depois de criar o segredo, copie o nome do recurso da Amazon (ARN) do segredo. Você o incluirá na política de permissões de perfis de pipeline.

Configurar um perfil de pipeline

O perfil passado no pipeline deve ter a seguinte política anexada para leitura e gravação no segredo criado na seção de pré-requisitos.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "SecretReadWrite", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name-random-6-characters" } ] }

O perfil também deve ter uma política anexada para acessar e gravar no coletor escolhido. Por exemplo, se você escolher OpenSearch como coletor, a política será semelhante à seguinte:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OpenSearchWritePolicy", "Effect": "Allow", "Action": "aoss:*", "Resource": "arn:aws:aoss:us-east-1:111122223333:collection/collection-id" } ] }

Configuração do pipeline de conector do Jira

É possível usar um esquema pré-configurado para criar esse pipeline. Para obter mais informações, consulte Trabalhar com esquemas.

Substitua placeholder values por suas próprias informações.

version: "2" extension: aws: secrets: jira-account-credentials: secret_id: "secret-arn" region: "secret-region" sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" atlassian-jira-pipeline: source: jira: # We only support one host url for now hosts: ["jira-host-url"] acknowledgments: true authentication: # Provide one of the authentication method to use. Supported methods are 'basic' and 'oauth2'. # For basic authentication, password is the API key that you generate using your jira account basic: username: ${{aws_secrets:jira-account-credentials:username}} password: ${{aws_secrets:jira-account-credentials:password}} # For OAuth2 based authentication, we require the following 4 key values stored in the secret # Follow atlassian instructions at the below link to generate these keys. # https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/ # If you are using OAuth2 authentication, we also require, write permission to your AWS secret to # be able to write the renewed tokens back into the secret. # oauth2: # client_id: ${{aws_secrets:jira-account-credentials:clientId}} # client_secret: ${{aws_secrets:jira-account-credentials:clientSecret}} # access_token: ${{aws_secrets:jira-account-credentials:accessToken}} # refresh_token: ${{aws_secrets:jira-account-credentials:refreshToken}} filter: project: key: include: # This is not project name. # It is an alphanumeric project key that you can find under project details in Jira. - "project-key" - "project-key" # exclude: # - "project-key" # - "project-key" issue_type: include: - "issue-type" # - "Story" # - "Bug" # - "Task" # exclude: # - "Epic" status: include: - "ticket-status" # - "To Do" # - "In Progress" # - "Done" # exclude: # - "Backlog" sink: - opensearch: # Provide an Amazon OpenSearch Service domain endpoint hosts: [ "https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com" ] index: "index_${getMetadata(\"project\")}" # Ensure adding unique document id which is the unique ticket id in this case document_id: '${/id}' aws: # Provide a Role ARN with access to the domain. This role should have a trust relationship with osis-pipelines.amazonaws.com sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" # Provide the region of the domain. region: "us-east-1" # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection serverless: false # serverless_options: # Specify a name here to create or update network policy for the serverless collection # network_policy_name: "network-policy-name" # Enable the 'distribution_version' setting if the Amazon OpenSearch Service domain is of version Elasticsearch 6.x # distribution_version: "es6" # Enable and switch the 'enable_request_compression' flag if the default compression setting is changed in the domain. # See Compressão de solicitações HTTP no Amazon OpenSearch Service # enable_request_compression: true/false # Optional: Enable the S3 DLQ to capture any failed requests in an S3 bucket. Delete this entire block if you don't want a DLQ. dlq: s3: # Provide an S3 bucket bucket: "your-dlq-bucket-name" # Provide a key path prefix for the failed requests # key_path_prefix: "kinesis-pipeline/logs/dlq" # Provide the region of the bucket. region: "us-east-1" # Provide a Role ARN with access to the bucket. This role should have a trust relationship with osis-pipelines.amazonaws.com sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role"

Chave para atributos na origem do Jira:

  1. hosts: a nuvem do Jira ou a URL on-premises. Geralmente, é assim https://your-domain-name.atlassian.net/.

  2. acknowledgments: para garantir a entrega dos dados ao coletor.

  3. authentication: descreve como você deseja que o pipeline acesse a instância do Jira. Escolha Basic ou OAuth2 e especifique os atributos de chave correspondentes que fazem referência às chaves em seu AWS segredo.

  4. filter: esta seção ajuda você a selecionar qual porção dos dados do Jira deve ser extraída e sincronizada.

    1. project: liste as chaves dos projetos que você deseja sincronizar na seção include. Caso contrário, liste os projetos que você deseja excluir na seção exclude. Nunca forneça mais de uma das opções de inclusão ou exclusão.

    2. issue_type: os tipos de problemas específicos que você deseja sincronizar. Siga o padrão similar include ou exclude que atenda às suas necessidades. Observe que os anexos aparecerão como links-âncora para o anexo original, mas o conteúdo do anexo não será extraído.

    3. status: filtro de status específico que você deseja aplicar para a consulta de extração de dados. Se você especificar include, somente os tickets com esses status serão sincronizados. Se você especificar exclude, todos os tíquetes, exceto os que tiverem os status excluídos listados, serão sincronizados.

Configuração do pipeline de conector do Confluence

É possível usar um esquema pré-configurado do Atlassian Confluence para criar esse pipeline. Para saber mais, consulte Trabalhar com esquemas.

version: "2" extension: aws: secrets: confluence-account-credentials: secret_id: "secret-arn" region: "secret-region" sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" atlassian-confluence-pipeline: source: confluence: # We currently support only one host URL. hosts: ["confluence-host-url"] acknowledgments: true authentication: # Provide one of the authentication method to use. Supported methods are 'basic' and 'oauth2'. # For basic authentication, password is the API key that you generate using your Confluence account basic: username: ${{aws_secrets:confluence-account-credentials:confluenceId}} password: ${{aws_secrets:confluence-account-credentials:confluenceCredential}} # For OAuth2 based authentication, we require the following 4 key values stored in the secret # Follow atlassian instructions at the following link to generate these keys: # https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/ # If you are using OAuth2 authentication, we also require write permission to your AWS secret to # be able to write the renewed tokens back into the secret. # oauth2: # client_id: ${{aws_secrets:confluence-account-credentials:clientId}} # client_secret: ${{aws_secrets:confluence-account-credentials:clientSecret}} # access_token: ${{aws_secrets:confluence-account-credentials:accessToken}} # refresh_token: ${{aws_secrets:confluence-account-credentials:refreshToken}} filter: space: key: include: # This is not space name. # It is a space key that you can find under space details in Confluence. - "space key" - "space key" # exclude: # - "space key" # - "space key" page_type: include: - "content type" # - "page" # - "blogpost" # - "comment" # exclude: # - "attachment" sink: - opensearch: # Provide an Amazon OpenSearch Service domain endpoint hosts: [ "https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com" ] index: "index_${getMetadata(\"space\")}" # Ensure adding unique document id which is the unique ticket ID in this case. document_id: '${/id}' aws: # Provide the Amazon Resource Name (ARN) for a role with access to the domain. This role should have a trust relationship with osis-pipelines.amazonaws.com. sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role" # Provide the Region of the domain. region: "us-east-1" # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection serverless: false # serverless_options: # Specify a name here to create or update network policy for the serverless collection. # network_policy_name: "network-policy-name" # Enable the 'distribution_version' setting if the Amazon OpenSearch Service domain is of version Elasticsearch 6.x # distribution_version: "es6" # Enable and switch the 'enable_request_compression' flag if the default compression setting is changed in the domain. # For more information, see Compressão de solicitações HTTP no Amazon OpenSearch Service. # enable_request_compression: true/false # Optional: Enable the S3 DLQ to capture any failed requests in an S3 bucket. Delete this entire block if you don't want a DLQ. dlq: s3: # Provide an S3 bucket bucket: "your-dlq-bucket-name" # Provide a key path prefix for the failed requests # key_path_prefix: "kinesis-pipeline/logs/dlq" # Provide the Rregion of the bucket. region: "us-east-1" # Provide the Amazon Resource Name (ARN) for a role with access to the bucket. This role should have a trust relationship with osis-pipelines.amazonaws.com sts_role_arn: "arn:aws:iam::123456789012:role/Example-Role"

Principais atributos na origem do Confluence:

  1. hosts: a nuvem do Confluence ou a URL on-premises. Geralmente, é similar a https://your-domain-name.atlassian.net/

  2. acknowledgments: para garantir a entrega dos dados ao coletor.

  3. authentication: descreve como você deseja que o pipeline acesse a instância do Confluence. Escolha Basic ou OAuth2 e especifique os atributos de chave correspondentes que fazem referência às chaves em seu AWS segredo.

  4. filter: esta seção ajuda você a selecionar qual porção dos dados do Confluence deve ser extraída e sincronizada.

    1. space: liste as chaves dos espaços que você deseja sincronizar na seção include. Caso contrário, liste os espaços que você deseja excluir na seção exclude. Nunca forneça mais de uma das opções de inclusão ou exclusão.

    2. page_type: tipos de página específicos (como página, postagem de blog ou anexos) que você deseja sincronizar. Siga o padrão similar include ou exclude que atenda às suas necessidades. Observe que os anexos aparecerão como links-âncora para o anexo original, mas o conteúdo do anexo não será extraído.

Consistência de dados

Com base nos filtros especificados no pipeline YAML, os projetos (ou espaços) selecionados serão extraídos uma vez e totalmente sincronizados com o coletor de destino. Depois, o monitoramento contínuo das alterações capturará as alterações à medida que elas ocorrerem e atualizará os dados no coletor. Uma exceção é que o monitoramento de alterações sincroniza apenas as ações create e update, não as ações delete.

Limitações

  • As ações de exclusão de usuário não serão sincronizadas. Os dados, uma vez gravados no coletor, ali permanecerão. As atualizações substituirão o conteúdo existente por novas alterações se o mapeamento de ID for especificado nas configurações do coletor.

  • As instâncias locais que usam versões mais antigas do software Atlassian que não oferecem suporte ao seguinte não APIs são compatíveis com essa fonte:

    • API search versão 3 do Jira

      • rest/api/3/search

      • rest/api/3/issue

    • Confluence

      • wiki/rest/api/content/search

      • wiki/rest/api/content

      • wiki/rest/api/settings/systemInfo

Métricas CloudWatch para conectores Atlassian

Tipo: métricas do conector do Jira

Fonte Métrica Tipo de métrica
acknowledgementSetSuccesses.contar Contador Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de tickets sincronizados com sucesso.
acknowledgementSetFailures.contar Contador Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de tickets em que houve falha de sincronização.
crawlingTime.avg Timer O tempo necessário para fazer o crawling por todas as novas alterações.
ticketFetchLatency.avg Timer A média de latência da API de busca de ticket.
ticketFetchLatency.máximo Timer O máximo de latência da API de busca de ticket.
ticketsRequested.count Contador Número de solicitações de busca de tíquete feitas.
ticketRequestedFailed.contar Contador Número de solicitações de busca de tíquete em que houve falha.
ticketRequestedSuccess.contar Contador Número de solicitações de busca de tíquete bem-sucedidas.
searchCallLatency.avg Timer Média de latência de chamada de API search.
searchCallLatency.máximo Timer Máximo de latência de chamada de API search.
searchResultsFound.contar Contador Número de itens encontrados em uma determinada chamada search.
searchRequestFailed.contar Contador Contagem de falhas de chamada de API search.
AuthFailures.count Contador Contagem de falhas de autenticação.

Tipo: métricas do conector do Confluence

Fonte Métrica Tipo de métrica
acknowledgementSetSuccesses.contar Contador Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de páginas sincronizadas com sucesso.
acknowledgementSetFailures.contar Contador Se as confirmações estiverem habilitadas, essa métrica fornecerá o número de páginas em que houve falha na sincronização.
crawlingTime.avg Timer O tempo necessário para fazer o crawling por todas as novas alterações.
pageFetchLatency.avg Timer Latência da API de busca de conteúdo (média).
pageFetchLatency.máximo Timer Latência da API de busca de conteúdo (máxima).
pagesRequested.count Contador Número de invocações da API de busca de conteúdo.
pageRequestFailed.contar Contador Número de solicitações da API de busca de conteúdo em que houve falha.
pageRequestedSuccess.contar Contador Número de solicitações da API de busca de conteúdo bem-sucedidas.
searchCallLatency.avg Timer Média de latência de chamada de API search.
searchCallLatency.máximo Timer Latência máxima de chamada de API search.
searchResultsFound.contar Contador Número de itens encontrados em uma determinada chamada search.
searchRequestsFailed.contar Contador Contagem de falhas de chamada de API search.
AuthFailures.count Contador Contagem de falhas de autenticação.