{"id":11761,"date":"2023-07-27T13:21:42","date_gmt":"2023-07-27T16:21:42","guid":{"rendered":"https:\/\/categoriaoutros.com.br\/?p=11761"},"modified":"2024-05-14T13:45:58","modified_gmt":"2024-05-14T16:45:58","slug":"pacemaker-executando-scriptscomando-quando-ocorrer-certo-eventos-no-cluster","status":"publish","type":"post","link":"https:\/\/categoriaoutros.com.br\/?p=11761","title":{"rendered":"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"180\" src=\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/02\/pacemaker.jpg\" alt=\"\" class=\"wp-image-9035\"\/><figcaption class=\"wp-element-caption\">Pacemaker &#8211; Eventos<\/figcaption><\/figure><\/div>\n\n\n<p>Um cluster no Pacemaker \u00e9 um sistema orientado a eventos, onde um evento pode ser uma falha de recurso ou n\u00f3, uma mudan\u00e7a de configura\u00e7\u00e3o ou um recurso iniciando ou parando. Voc\u00ea pode configurar alertas de cluster do Pacemaker para executar alguma a\u00e7\u00e3o externa quando um evento de cluster ocorre por meio de agentes de alerta, que s\u00e3o programas externos que o cluster chama da mesma maneira que o cluster chama os agentes de recursos para lidar com a configura\u00e7\u00e3o e opera\u00e7\u00e3o de recursos.<\/p>\n\n\n\n<p>O cluster passa informa\u00e7\u00f5es sobre o evento para o agente por meio de vari\u00e1veis \u200b\u200bde ambiente. Os agentes podem fazer qualquer coisa com essas informa\u00e7\u00f5es, como enviar uma mensagem de e-mail ou registrar em um arquivo ou atualizar um sistema de monitoramento.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pacemaker<\/strong> fornece v\u00e1rios <strong>agentes<\/strong> de alerta de <strong>amostra<\/strong>(arquivos &#8220;pr\u00e9-prontos&#8221; que podemos aproveitar e reusar), que s\u00e3o instalados em <strong>\/usr\/share\/pacemaker\/alerts <\/strong>por padr\u00e3o. Esses scripts de amostra podem ser copiados e usados \u200b\u200bcomo est\u00e3o ou podem ser usados \u200b\u200bcomo modelos a serem editados para atender \u00e0s suas finalidades. Consulte o c\u00f3digo-fonte dos agentes de amostra para obter o conjunto completo de atributos que eles suportam.<\/li>\n\n\n\n<li>Se os agentes de alerta de amostra n\u00e3o atenderem \u00e0s suas necessidades, voc\u00ea poder\u00e1 escrever seus pr\u00f3prios agentes de alerta para um alerta Pacemaker chamar.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Exemplo Simples <\/h2>\n\n\n\n<p>Esse exemplo \u00e9 bastante simples mas tem o objetivo de clarear o entendimento do conte\u00fado seguinte.<\/p>\n\n\n\n<p>\u00c9 importante saber que os eventos s\u00e3o executados pelo usu\u00e1rio hacluster. Ent\u00e3o, se voc\u00ea<strong> n\u00e3o est\u00e1 tendo<\/strong> \u00eaxito na execu\u00e7\u00e3o de um script ou comando pode ser que o usu\u00e1rio hacluster n\u00e3o tenha permiss\u00e3o. Uma dica que dou \u00e9 habilitar esse usu\u00e1rio para usar sudo sem senha. <\/p>\n\n\n\n<p>Vamos ao passo a passo. Vou fazer com que toda vez que ocorra uma altera\u00e7\u00e3o no cluster seja adicionada uma linha contendo o texto &#8220;<em>teste do pacemaker<\/em>&#8221; dentro do arquivo \/tmp\/teste.txt <\/p>\n\n\n\n<p>#1 crie o arquivo \/tmp\/teste.txt<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">touch \/tmp\/teste.txt<\/pre>\n\n\n\n<p>#2 agora, crie um script <strong>\/usr\/bin\/teste.sh<\/strong> com o seguinte conte\u00fado<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#! \/bin\/bash\necho \"<em>teste do pacemaker<\/em>\" &gt;&gt; \/tmp\/teste.txt<\/pre>\n\n\n\n<p>#3 vamos criar o alerta. Execute o comando abaixo<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pcs alert create id=teste   path=\/usr\/bin\/teste.sh <\/pre>\n\n\n\n<p>Agora, qualquer evento gerado executar\u00e1 o script  <strong>\/usr\/bin\/teste.sh<\/strong>  ser\u00e1 executado.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalando e configurando agentes de alerta de amostra com pacemaker<\/h2>\n\n\n\n<p>Ao usar um dos agentes de alerta de amostra, voc\u00ea deve revisar o script para garantir que ele atenda \u00e0s suas necessidades. Esses agentes de amostra s\u00e3o fornecidos como ponto de partida para scripts customizados para ambientes de cluster espec\u00edficos. Observe que, embora a Red Hat suporte as interfaces que os scripts dos agentes de alerta usam para se comunicar com o Pacemaker, a Red Hat n\u00e3o fornece suporte para os pr\u00f3prios agentes personalizados.<\/p>\n\n\n\n<p>Para usar um dos agentes de alerta de amostra, voc\u00ea deve instalar o agente em cada n\u00f3 no cluster. Por exemplo, o comando a seguir instala o script alert_file.sh.sample como alert_file.sh.<\/p>\n\n\n\n<pre>\ninstall --mode=0755 \/usr\/share\/pacemaker\/alerts\/alert_file.sh.sample \/var\/lib\/pacemaker\/alert_file.sh\n<\/pre>\n\n\n\n<p>O programa <strong>install<\/strong>, que usamos acima, copia arquivos (geralmente apenas compilados) para localiza\u00e7\u00f5es de destino que voc\u00ea escolher. Se voc\u00ea deseja baixar e instalar um pacote pronto-para-uso em um sistema GNU\/Linux, voc\u00ea deve usar um gerenciador de pacotes como yum ou apt-get.<\/p>\n\n\n\n<p>Depois de instalar o script, voc\u00ea pode criar um alerta que usa o script.<\/p>\n\n\n\n<p>O exemploacima configura um alerta que usa o agente de alerta alert_file.sh instalado para registrar eventos em um arquivo. Os agentes de alerta s\u00e3o executados como o usu\u00e1rio hacluster, que possui um conjunto m\u00ednimo de permiss\u00f5es.<\/p>\n\n\n\n<p>Este exemplo cria o arquivo de log pcmk_alert_file.log que ser\u00e1 usado para registrar os eventos. Em seguida, ele cria o agente de alerta e inclui o caminho no arquivo de log como seu destinat\u00e1rio.<\/p>\n\n\n\n<pre>\n\ntouch \/var\/log\/pcmk_alert_file.log\nchown hacluster:haclient \/var\/log\/pcmk_alert_file.log\nchmod 600 \/var\/log\/pcmk_alert_file.log\npcs alert create id=alert_file description=\"Log events to a file.\" path=\/var\/lib\/pacemaker\/alert_file.sh\npcs alert recipient add alert_file id=my-alert_logfile value=\/var\/log\/pcmk_alert_file.log\n\n<\/pre>\n\n\n\n<p>O exemplo a seguir instala o script alert_snmp.sh.sample como alert_snmp.sh e configura um alerta que usa o agente de alerta alert_snmp.sh instalado para enviar eventos de cluster como traps SNMP. Por padr\u00e3o, o script enviar\u00e1 todos os eventos, exceto chamadas de monitor bem-sucedidas para o servidor SNMP. Este exemplo configura o formato de carimbo de data\/hora como uma op\u00e7\u00e3o meta. Depois de configurar o alerta, este exemplo configura um destinat\u00e1rio para o alerta e exibe a configura\u00e7\u00e3o do alerta.<\/p>\n\n\n\n<pre>\n\ninstall --mode=0755 \/usr\/share\/pacemaker\/alerts\/alert_snmp.sh.sample \/var\/lib\/pacemaker\/alert_snmp.sh\npcs alert create id=snmp_alert path=\/var\/lib\/pacemaker\/alert_snmp.sh meta timestamp-format=\"%Y-%m-%d,%H:%M:%S.%01N\"\npcs alert recipient add snmp_alert value=192.168.1.2\npcs alert\n\n<\/pre>\n\n\n\n<p>O exemplo a seguir instala o agente alert_smtp.sh e, em seguida, configura um alerta que usa o agente de alerta instalado para enviar eventos de cluster como mensagens de email. Depois de configurar o alerta, este exemplo configura um destinat\u00e1rio e exibe a configura\u00e7\u00e3o do alerta.<\/p>\n\n\n\n<pre>\ninstall --mode=0755 \/usr\/share\/pacemaker\/alerts\/alert_smtp.sh.sample \/var\/lib\/pacemaker\/alert_smtp.sh\npcs alert create id=smtp_alert path=\/var\/lib\/pacemaker\/alert_smtp.sh options email_sender=donotreply@example.com\npcs alert recipient add smtp_alert value=admin@example.com\npcs alert\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Criando um alerta de cluster com pacemaker<\/h2>\n\n\n\n<p>O comando a seguir cria um alerta de cluster. As op\u00e7\u00f5es que voc\u00ea configura s\u00e3o valores de configura\u00e7\u00e3o espec\u00edficos do agente que s\u00e3o transmitidos para o script do agente de alerta no caminho especificado como vari\u00e1veis \u200b\u200bde ambiente adicionais. Se voc\u00ea n\u00e3o especificar um valor para id, um ser\u00e1 gerado.<\/p>\n\n\n\n<pre>\npcs alert create path=path [id=alert-id] [description=description] [options [option=value]...] [meta [meta-option=value]...]\n\n<\/pre>\n\n\n\n<p>V\u00e1rios agentes de alerta podem ser configurados; o cluster chamar\u00e1 todos eles para cada evento. Os agentes de alerta ser\u00e3o chamados apenas nos n\u00f3s do cluster. Eles ser\u00e3o chamados para eventos envolvendo n\u00f3s Remotos do Pacemaker, mas nunca ser\u00e3o chamados nesses n\u00f3s.<\/p>\n\n\n\n<p>O exemplo a seguir cria um alerta simples que chamar\u00e1 myscript.sh para cada evento.<\/p>\n\n\n\n<pre>\npcs alert create id=my_alert path=\/path\/to\/myscript.sh\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exibindo, modificando e removendo alertas de cluster no pacemaker<\/h2>\n\n\n\n<p>H\u00e1 uma variedade de comandos pcs que voc\u00ea pode usar para exibir, modificar e remover alertas de cluster. <\/p>\n\n\n\n<p>O comando a seguir mostra todos os alertas configurados junto com os valores das op\u00e7\u00f5es configuradas.<\/p>\n\n\n\n<pre>\npcs alert [config|show]\n<\/pre>\n\n\n\n<p>O comando a seguir atualiza um alerta existente com o valor alert-id especificado.<\/p>\n\n\n\n<pre>\npcs alert update alert-id [path=path] [description=description] [options [option=value]...] [meta [meta-option=value]...]\n<\/pre>\n\n\n\n<p>O comando a seguir remove um alerta com o valor alert-id especificado.<\/p>\n\n\n\n<pre>\npcs alert remove alert-id\n<\/pre>\n\n\n\n<p>Como alternativa, voc\u00ea pode executar o comando <strong>pcs alert delete<\/strong>, que \u00e9 id\u00eantico ao comando <strong>pcs alert remove<\/strong>. Os comandos pcs alert delete e pcs alert remove permitem que voc\u00ea especifique mais de um alerta a ser exclu\u00eddo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando destinat\u00e1rios de alerta de cluster<\/h2>\n\n\n\n<p>Normalmente, os alertas s\u00e3o direcionados a um destinat\u00e1rio. Assim, cada alerta pode ser configurado adicionalmente com um ou mais destinat\u00e1rios. O cluster chamar\u00e1 o agente separadamente para cada destinat\u00e1rio.<\/p>\n\n\n\n<p>O destinat\u00e1rio pode ser qualquer coisa que o agente de alerta possa reconhecer: um endere\u00e7o IP, um endere\u00e7o de e-mail, um nome de arquivo ou qualquer coisa que o agente espec\u00edfico suporte.<\/p>\n\n\n\n<p>O comando a seguir adiciona um novo destinat\u00e1rio ao alerta especificado.<\/p>\n\n\n\n<pre>\npcs alert recipient add alert-id value=recipient-value [id=recipient-id] [description=description] [options [option=value]...] [meta [meta-option=value]...]\n<\/pre>\n\n\n\n<p>O comando a seguir atualiza um destinat\u00e1rio de alerta existente.<\/p>\n\n\n\n<pre>\npcs alert recipient update recipient-id [value=recipient-value] [description=description] [options [option=value]...] [meta [meta-option=value]...]\n<\/pre>\n\n\n\n<p>O comando a seguir remove o destinat\u00e1rio do alerta especificado.<\/p>\n\n\n\n<pre>\npcs alert recipient remove recipient-id\n<\/pre>\n\n\n\n<p>Como alternativa, voc\u00ea pode executar o comando <strong>pcs alert recipient delete,<\/strong> que \u00e9 id\u00eantico ao comando <strong>pcs alert recipient remove<\/strong>. Ambos os comandos permitem que voc\u00ea remova mais de um destinat\u00e1rio de alerta. <\/p>\n\n\n\n<p>O comando de exemplo a seguir adiciona o destinat\u00e1rio do alerta my-alert-recipient com um ID de destinat\u00e1rio my-recipient-id ao alerta my-alert. Isso configurar\u00e1 o cluster para chamar o script de alerta que foi configurado para my-alert para cada evento, passando o destinat\u00e1rio some-address como uma vari\u00e1vel de ambiente.<\/p>\n\n\n\n<pre>\n pcs alert recipient add my-alert value=my-alert-recipient id=my-recipient-id options value=some-address\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Op\u00e7\u00f5es de meta de alerta<\/h2>\n\n\n\n<p>Assim como acontece com os agentes de recursos, as metaop\u00e7\u00f5es podem ser configuradas para que os agentes de alerta afetem como o Pacemaker os chama. A tabela a seguir descreve as metaop\u00e7\u00f5es de alerta. As op\u00e7\u00f5es meta podem ser configuradas por agente de alerta, bem como por destinat\u00e1rio.<\/p>\n\n\n\n<p><strong>Table&nbsp;28.1.&nbsp;Alert Meta Options<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Meta-Attribute<\/th><th>Padr\u00e3o<\/th><th>Descri\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td><code>timestamp-format<\/code><\/td><td>%H:%M:%S.%06N<\/td><td>Formato que o cluster usar\u00e1 ao enviar o timestamp do evento para o agente. Esta \u00e9 uma string usada com o comando date(1).<\/td><\/tr><tr><td><code>timeout<\/code><\/td><td>30s<\/td><td>Se o agente de alerta n\u00e3o for conclu\u00eddo dentro desse per\u00edodo de tempo, ele ser\u00e1 encerrado.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>O exemplo a seguir configura um alerta que chama o script myscript.sh e adiciona dois destinat\u00e1rios ao alerta. O primeiro destinat\u00e1rio tem um ID de my-alert-recipient1 e o segundo destinat\u00e1rio tem um ID de my-alert-recipient2. O script ser\u00e1 chamado duas vezes para cada evento, com cada chamada usando um tempo limite de 15 segundos. Uma chamada ser\u00e1 passada para o destinat\u00e1rio someuser@example.com com um timestamp no formato %D %H:%M, enquanto a outra chamada ser\u00e1 passada para o destinat\u00e1rio otheruser@example.com com um timestamp no formato %c<\/p>\n\n\n\n<pre>\npcs alert create id=my-alert path=\/path\/to\/myscript.sh meta timeout=15s\npcs alert recipient add my-alert value=someuser@example.com id=my-alert-recipient1 meta timestamp-format=\"%D %H:%M\"\npcs alert recipient add my-alert value=otheruser@example.com id=my-alert-recipient2 meta timestamp-format=\"%c\"\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Exemplos de comando de configura\u00e7\u00e3o de alerta de cluster<\/h2>\n\n\n\n<p>Os exemplos a seguir mostram alguns comandos b\u00e1sicos de configura\u00e7\u00e3o de alerta para mostrar o formato a ser usado para criar alertas, adicionar destinat\u00e1rios e exibir os alertas configurados. Observe que, embora voc\u00ea deva instalar os pr\u00f3prios agentes de alerta em cada n\u00f3 em um cluster, \u00e9 necess\u00e1rio executar os comandos pcs apenas uma vez. Os comandos a seguir criam um alerta simples, adicionam dois destinat\u00e1rios ao alerta e exibem os valores configurados.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como nenhum valor de ID de alerta \u00e9 especificado, o sistema cria um valor de ID de alerta de alert. <\/li>\n\n\n\n<li>O primeiro comando de cria\u00e7\u00e3o de destinat\u00e1rio especifica um destinat\u00e1rio de rec_value. Como esse comando n\u00e3o especifica um ID de destinat\u00e1rio, o valor de alert-recipient \u00e9 usado como o ID de destinat\u00e1rio. <\/li>\n\n\n\n<li>O segundo comando de cria\u00e7\u00e3o de destinat\u00e1rio especifica um destinat\u00e1rio de rec_value2. Este comando especifica um ID de destinat\u00e1rio de my-recipient para o destinat\u00e1rio.<\/li>\n<\/ul>\n\n\n\n<pre>\n\n# pcs alert create path=\/my\/path\n# pcs alert recipient add alert value=rec_value\n# pcs alert recipient add alert value=rec_value2 id=my-recipient\n# pcs alert config\nAlerts:\n Alert: alert (path=\/my\/path)\n  Recipients:\n   Recipient: alert-recipient (value=rec_value)\n   Recipient: my-recipient (value=rec_value2)\n\n<\/pre>\n\n\n\n<p>Os seguintes comandos adicionam um segundo alerta e um destinat\u00e1rio para esse alerta. O ID de alerta para o segundo alerta \u00e9 my-alert e o valor do destinat\u00e1rio \u00e9 my-other-recipient. Como nenhum ID de destinat\u00e1rio \u00e9 especificado, o sistema fornece um ID de destinat\u00e1rio de my-alert-recipient.<\/p>\n\n\n\n<pre>\n# pcs alert create id=my-alert path=\/path\/to\/script description=alert_description options option1=value1 opt=val meta timeout=50s timestamp-format=\"%H%B%S\"\n# pcs alert recipient add my-alert value=my-other-recipient\n# pcs alert\nAlerts:\n Alert: alert (path=\/my\/path)\n  Recipients:\n   Recipient: alert-recipient (value=rec_value)\n   Recipient: my-recipient (value=rec_value2)\n Alert: my-alert (path=\/path\/to\/script)\n  Description: alert_description\n  Options: opt=val option1=value1\n  Meta options: timestamp-format=%H%B%S timeout=50s\n  Recipients:\n   Recipient: my-alert-recipient (value=my-other-recipient)\n<\/pre>\n\n\n\n<p>Os comandos a seguir modificam os valores de alerta para o alerta my-alert e para o destinat\u00e1rio my-alert-recipient.<\/p>\n\n\n\n<pre>\n\n# pcs alert update my-alert options option1=newvalue1 meta timestamp-format=\"%H%M%S\"\n# pcs alert recipient update my-alert-recipient options option1=new meta timeout=60s\n# pcs alert\nAlerts:\n Alert: alert (path=\/my\/path)\n  Recipients:\n   Recipient: alert-recipient (value=rec_value)\n   Recipient: my-recipient (value=rec_value2)\n Alert: my-alert (path=\/path\/to\/script)\n  Description: alert_description\n  Options: opt=val option1=newvalue1\n  Meta options: timestamp-format=%H%M%S timeout=50s\n  Recipients:\n   Recipient: my-alert-recipient (value=my-other-recipient)\n    Options: option1=new\n    Meta options: timeout=60s\n\n<\/pre>\n\n\n\n<p>O comando a seguir remove o destinat\u00e1rio my-alert-recipient do alerta.<\/p>\n\n\n\n<pre>\n# pcs alert recipient remove my-recipient\n# pcs alert\nAlerts:\n Alert: alert (path=\/my\/path)\n  Recipients:\n   Recipient: alert-recipient (value=rec_value)\n Alert: my-alert (path=\/path\/to\/script)\n  Description: alert_description\n  Options: opt=val option1=newvalue1\n  Meta options: timestamp-format=\"%M%B%S\" timeout=50s\n  Recipients:\n   Recipient: my-alert-recipient (value=my-other-recipient)\n    Options: option1=new\n    Meta options: timeout=60s\n<\/pre>\n\n\n\n<p>O comando a seguir remove myalert da configura\u00e7\u00e3o.<\/p>\n\n\n\n<pre>\n# pcs alert remove myalert\n# pcs alert\nAlerts:\n Alert: alert (path=\/my\/path)\n  Recipients:\n   Recipient: alert-recipient (value=rec_value)\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Criando um agente de alerta de cluster<\/h2>\n\n\n\n<p>Existem tr\u00eas tipos de alertas de cluster do Pacemaker:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>node alerts, <\/li>\n\n\n\n<li>fencing alerts,<\/li>\n\n\n\n<li>resource alerts.<\/li>\n<\/ul>\n\n\n\n<p>As vari\u00e1veis \u200b\u200bde ambiente transmitidas aos agentes de alerta podem ser diferentes, dependendo do tipo de alerta. A tabela a seguir descreve as vari\u00e1veis \u200b\u200bde ambiente que s\u00e3o transmitidas aos agentes de alerta e especifica quando a vari\u00e1vel de ambiente \u00e9 associada a um tipo de alerta espec\u00edfico.<\/p>\n\n\n\n<p>Obs.: as palavras resources e recursos t\u00eam o mesmo sentido.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Vari\u00e1vel de ambiente<\/th><th>Descri\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td><code>CRM_alert_kind<\/code><\/td><td>O tipo de alerta (node, fencing, ou resource))<\/td><\/tr><tr><td><code>CRM_alert_version<\/code><\/td><td>A vers\u00e3o do Pacemaker que envia o alerta<\/td><\/tr><tr><td><code>CRM_alert_recipient<\/code><\/td><td>O destinat\u00e1rio configurado<\/td><\/tr><tr><td><code>CRM_alert_node_sequence<\/code><\/td><td>Um n\u00famero de sequ\u00eancia aumentado sempre que um alerta est\u00e1 sendo emitido no n\u00f3 local, que pode ser usado para referenciar a ordem em que os alertas foram emitidos pelo Pacemaker.&nbsp;Um alerta para um evento que ocorreu posteriormente no tempo tem de forma confi\u00e1vel um n\u00famero de sequ\u00eancia maior do que os alertas para eventos anteriores.&nbsp;Esteja ciente de que esse n\u00famero n\u00e3o tem significado em todo o cluster.<\/td><\/tr><tr><td><code>CRM_alert_timestamp<\/code><\/td><td>Um carimbo de data\/hora criado antes da execu\u00e7\u00e3o do agente, no formato especificado pela&nbsp;<code>timestamp-format<\/code>op\u00e7\u00e3o meta.&nbsp;Isso permite que o agente tenha um tempo confi\u00e1vel e de alta precis\u00e3o de quando o evento ocorreu, independentemente de quando o pr\u00f3prio agente foi chamado (o que pode ser atrasado devido \u00e0 carga do sistema ou outras circunst\u00e2ncias).<\/td><\/tr><tr><td><code>CRM_alert_node<\/code><\/td><td>Nome do n\u00f3 afetado<\/td><\/tr><tr><td><code>CRM_alert_desc<\/code><\/td><td>Detalhe sobre o evento.&nbsp;Para alertas de n\u00f3, este \u00e9 o estado atual do n\u00f3 (membro ou perdido).&nbsp;Para alertas de fencing, este \u00e9 um resumo da opera\u00e7\u00e3o de fencing solicitada, incluindo origem, destino e c\u00f3digo de erro da opera\u00e7\u00e3o de fencing, se houver.&nbsp;Para alertas de recursos, esta \u00e9 uma string leg\u00edvel equivalente a&nbsp;<code>CRM_alert_status<\/code>.<\/td><\/tr><tr><td><code>CRM_alert_nodeid<\/code><\/td><td>ID do n\u00f3 cujo status foi alterado (fornecido apenas com alertas de n\u00f3)<\/td><\/tr><tr><td><code>CRM_alert_task<\/code><\/td><td>A opera\u00e7\u00e3o de prote\u00e7\u00e3o ou recurso solicitada (fornecida apenas com alertas de prote\u00e7\u00e3o e recurso)<\/td><\/tr><tr><td><code>CRM_alert_rc<\/code><\/td><td>O c\u00f3digo num\u00e9rico de retorno da opera\u00e7\u00e3o de fencing ou recurso (fornecido apenas com alertas de fencing e recurso)<\/td><\/tr><tr><td><code>CRM_alert_rsc<\/code><\/td><td>O nome do resource afetado (somente alertas de recurso)<\/td><\/tr><tr><td><code>CRM_alert_interval<\/code><\/td><td>O intervalo da opera\u00e7\u00e3o de resource (somente alertas de recurso)<\/td><\/tr><tr><td><code>CRM_alert_target_rc<\/code><\/td><td>O c\u00f3digo de retorno num\u00e9rico esperado da opera\u00e7\u00e3o (somente alertas de recursos)<\/td><\/tr><tr><td><code>CRM_alert_status<\/code><\/td><td>Um c\u00f3digo num\u00e9rico usado pelo Pacemaker para representar o resultado da opera\u00e7\u00e3o (somente alertas de recursos)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Ao escrever um agente de alerta, voc\u00ea deve levar em considera\u00e7\u00e3o as seguintes preocupa\u00e7\u00f5es.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Os agentes de alerta podem ser chamados sem destinat\u00e1rio (se nenhum estiver configurado), portanto o agente deve ser capaz de lidar com essa situa\u00e7\u00e3o, mesmo que s\u00f3 saia nesse caso.&nbsp;Os usu\u00e1rios podem modificar a configura\u00e7\u00e3o em etapas e adicionar um destinat\u00e1rio posteriormente.<\/li>\n\n\n\n<li>Se mais de um destinat\u00e1rio for configurado para um alerta, o agente de alerta ser\u00e1 chamado uma vez por destinat\u00e1rio.&nbsp;Se um agente n\u00e3o puder ser executado simultaneamente, ele dever\u00e1 ser configurado com apenas um \u00fanico destinat\u00e1rio.&nbsp;O agente \u00e9 livre, no entanto, para interpretar o destinat\u00e1rio como uma lista.<\/li>\n\n\n\n<li>Quando ocorre um evento de cluster, todos os alertas s\u00e3o disparados ao mesmo tempo como processos separados.&nbsp;Dependendo de quantos alertas e destinat\u00e1rios est\u00e3o configurados e do que \u00e9 feito nos agentes de alerta, pode ocorrer uma explos\u00e3o de carga significativa.&nbsp;O agente pode ser escrito para levar isso em considera\u00e7\u00e3o, por exemplo, enfileirando a\u00e7\u00f5es com uso intensivo de recursos em alguma outra inst\u00e2ncia, em vez de execut\u00e1-las diretamente.<\/li>\n\n\n\n<li>Os agentes de alerta s\u00e3o executados como o&nbsp;<code>hacluster<\/code>usu\u00e1rio, que possui um conjunto m\u00ednimo de permiss\u00f5es.&nbsp;Se um agente exigir privil\u00e9gios adicionais, \u00e9 recomend\u00e1vel configurar&nbsp;<code>sudo<\/code>para permitir que o agente execute os comandos necess\u00e1rios como outro usu\u00e1rio com os privil\u00e9gios apropriados.<\/li>\n\n\n\n<li>Tome cuidado para validar e limpar os par\u00e2metros configurados pelo usu\u00e1rio, como&nbsp;<code>CRM_alert_timestamp<\/code>(cujo conte\u00fado \u00e9 especificado pelo configurado pelo usu\u00e1rio&nbsp;<code>timestamp-format<\/code>),&nbsp;<code>CRM_alert_recipient<\/code>e todas as op\u00e7\u00f5es de alerta.&nbsp;Isso \u00e9 necess\u00e1rio para proteger contra erros de configura\u00e7\u00e3o.&nbsp;Al\u00e9m disso, se algum usu\u00e1rio puder modificar o CIB sem ter&nbsp;<code>hacluster<\/code>acesso de n\u00edvel aos n\u00f3s do cluster, isso tamb\u00e9m \u00e9 uma preocupa\u00e7\u00e3o de seguran\u00e7a potencial e voc\u00ea deve evitar a possibilidade de inje\u00e7\u00e3o de c\u00f3digo.<\/li>\n\n\n\n<li>Se um cluster cont\u00e9m recursos com opera\u00e7\u00f5es para as quais o&nbsp;<code>on-fail<\/code>par\u00e2metro \u00e9 definido como&nbsp;<code>fence<\/code>, haver\u00e1 v\u00e1rias notifica\u00e7\u00f5es de cerca em caso de falha, uma para cada recurso para o qual esse par\u00e2metro \u00e9 definido mais uma notifica\u00e7\u00e3o adicional.&nbsp;Tanto o&nbsp;<code>pacemaker-fenced<\/code>quanto&nbsp;<code>pacemaker-controld<\/code>enviar\u00e3o notifica\u00e7\u00f5es.&nbsp;O pacemaker executa apenas uma opera\u00e7\u00e3o de cerca real neste caso, no entanto, n\u00e3o importa quantas notifica\u00e7\u00f5es sejam enviadas.<\/li>\n<\/ul>\n\n\n\n<p><strong>Nota<\/strong>:<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\"><em> A interface de alertas foi projetada para ser compat\u00edvel com a interface de scripts externos usada pelo resource&nbsp;<code>ocf:pacemaker:ClusterMon<\/code>.&nbsp;Para preservar essa compatibilidade, as vari\u00e1veis \u200b\u200bde ambiente transmitidas aos agentes de alerta est\u00e3o dispon\u00edveis acompanhadas&nbsp;<code>CRM_notify_<\/code>de&nbsp;<code>CRM_alert_<\/code>.&nbsp;Uma quebra na compatibilidade \u00e9 que o resource&nbsp;<code>ClusterMon<\/code> executou scripts externos como o usu\u00e1rio raiz, enquanto os agentes de alerta s\u00e3o executados como o&nbsp;<code>hacluster<\/code>usu\u00e1rio.<\/em><\/mark><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Fontes: <a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/8\/html\/configuring_and_managing_high_availability_clusters\/assembly_configuring-pacemaker-alert-agents_configuring-and-managing-high-availability-clusters\">redhat<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um cluster no Pacemaker \u00e9 um sistema orientado a eventos, onde um evento pode ser uma falha de recurso ou n\u00f3, uma mudan\u00e7a de configura\u00e7\u00e3o ou um recurso iniciando ou parando. Voc\u00ea pode configurar alertas de cluster do Pacemaker para executar alguma a\u00e7\u00e3o externa quando um evento de cluster ocorre por meio de agentes de&#8230;<\/p>\n<p class=\"more-link-wrap\"><a href=\"https:\/\/categoriaoutros.com.br\/?p=11761\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &ldquo;Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster&rdquo;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,2918],"tags":[3797],"class_list":["post-11761","post","type-post","status-publish","format-standard","hentry","category-informatica-dicas","category-linux","tag-pacemaker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster - Categoria Outros<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/categoriaoutros.com.br\/?p=11761\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster - Categoria Outros\" \/>\n<meta property=\"og:description\" content=\"Um cluster no Pacemaker \u00e9 um sistema orientado a eventos, onde um evento pode ser uma falha de recurso ou n\u00f3, uma mudan\u00e7a de configura\u00e7\u00e3o ou um recurso iniciando ou parando. Voc\u00ea pode configurar alertas de cluster do Pacemaker para executar alguma a\u00e7\u00e3o externa quando um evento de cluster ocorre por meio de agentes de...Read More &ldquo;Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster&rdquo; &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/categoriaoutros.com.br\/?p=11761\" \/>\n<meta property=\"og:site_name\" content=\"Categoria Outros\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/categoriaoutros\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-27T16:21:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-14T16:45:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/02\/pacemaker.jpg\" \/>\n<meta name=\"author\" content=\"Categoria: Outros\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CategoriaOutros\" \/>\n<meta name=\"twitter:site\" content=\"@CategoriaOutros\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Categoria: Outros\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=11761#article\",\"isPartOf\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=11761\"},\"author\":{\"name\":\"Categoria: Outros\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40\"},\"headline\":\"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster\",\"datePublished\":\"2023-07-27T16:21:42+00:00\",\"dateModified\":\"2024-05-14T16:45:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=11761\"},\"wordCount\":2621,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\"},\"keywords\":[\"pacemaker\"],\"articleSection\":[\"Inform\u00e1tica\",\"Linux\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/categoriaoutros.com.br\/?p=11761#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=11761\",\"url\":\"https:\/\/categoriaoutros.com.br\/?p=11761\",\"name\":\"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster - Categoria Outros\",\"isPartOf\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#website\"},\"datePublished\":\"2023-07-27T16:21:42+00:00\",\"dateModified\":\"2024-05-14T16:45:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=11761#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/categoriaoutros.com.br\/?p=11761\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=11761#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/categoriaoutros.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#website\",\"url\":\"https:\/\/categoriaoutros.com.br\/\",\"name\":\"Categoria Outros\",\"description\":\"Assuntos Diversos\",\"publisher\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/categoriaoutros.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\",\"name\":\"Categoria Outros\",\"alternateName\":\"Categoria Outros\",\"url\":\"https:\/\/categoriaoutros.com.br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg\",\"contentUrl\":\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg\",\"width\":400,\"height\":400,\"caption\":\"Categoria Outros\"},\"image\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/categoriaoutros\",\"https:\/\/twitter.com\/CategoriaOutros\",\"https:\/\/br.pinterest.com\/CategoriaOutros\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40\",\"name\":\"Categoria: Outros\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g\",\"caption\":\"Categoria: Outros\"},\"sameAs\":[\"http:\/\/categoriaoutros.com.br\"],\"url\":\"https:\/\/categoriaoutros.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster - Categoria Outros","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/categoriaoutros.com.br\/?p=11761","og_locale":"pt_BR","og_type":"article","og_title":"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster - Categoria Outros","og_description":"Um cluster no Pacemaker \u00e9 um sistema orientado a eventos, onde um evento pode ser uma falha de recurso ou n\u00f3, uma mudan\u00e7a de configura\u00e7\u00e3o ou um recurso iniciando ou parando. Voc\u00ea pode configurar alertas de cluster do Pacemaker para executar alguma a\u00e7\u00e3o externa quando um evento de cluster ocorre por meio de agentes de...Read More &ldquo;Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster&rdquo; &raquo;","og_url":"https:\/\/categoriaoutros.com.br\/?p=11761","og_site_name":"Categoria Outros","article_publisher":"https:\/\/www.facebook.com\/categoriaoutros","article_published_time":"2023-07-27T16:21:42+00:00","article_modified_time":"2024-05-14T16:45:58+00:00","og_image":[{"url":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/02\/pacemaker.jpg"}],"author":"Categoria: Outros","twitter_card":"summary_large_image","twitter_creator":"@CategoriaOutros","twitter_site":"@CategoriaOutros","twitter_misc":{"Escrito por":"Categoria: Outros","Est. tempo de leitura":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/categoriaoutros.com.br\/?p=11761#article","isPartOf":{"@id":"https:\/\/categoriaoutros.com.br\/?p=11761"},"author":{"name":"Categoria: Outros","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40"},"headline":"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster","datePublished":"2023-07-27T16:21:42+00:00","dateModified":"2024-05-14T16:45:58+00:00","mainEntityOfPage":{"@id":"https:\/\/categoriaoutros.com.br\/?p=11761"},"wordCount":2621,"commentCount":0,"publisher":{"@id":"https:\/\/categoriaoutros.com.br\/#organization"},"keywords":["pacemaker"],"articleSection":["Inform\u00e1tica","Linux"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/categoriaoutros.com.br\/?p=11761#respond"]}]},{"@type":"WebPage","@id":"https:\/\/categoriaoutros.com.br\/?p=11761","url":"https:\/\/categoriaoutros.com.br\/?p=11761","name":"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster - Categoria Outros","isPartOf":{"@id":"https:\/\/categoriaoutros.com.br\/#website"},"datePublished":"2023-07-27T16:21:42+00:00","dateModified":"2024-05-14T16:45:58+00:00","breadcrumb":{"@id":"https:\/\/categoriaoutros.com.br\/?p=11761#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/categoriaoutros.com.br\/?p=11761"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/categoriaoutros.com.br\/?p=11761#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/categoriaoutros.com.br\/"},{"@type":"ListItem","position":2,"name":"Pacemaker: Executando Scripts(comando) quando Ocorrer Certos Eventos no Cluster"}]},{"@type":"WebSite","@id":"https:\/\/categoriaoutros.com.br\/#website","url":"https:\/\/categoriaoutros.com.br\/","name":"Categoria Outros","description":"Assuntos Diversos","publisher":{"@id":"https:\/\/categoriaoutros.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/categoriaoutros.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/categoriaoutros.com.br\/#organization","name":"Categoria Outros","alternateName":"Categoria Outros","url":"https:\/\/categoriaoutros.com.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg","contentUrl":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg","width":400,"height":400,"caption":"Categoria Outros"},"image":{"@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/categoriaoutros","https:\/\/twitter.com\/CategoriaOutros","https:\/\/br.pinterest.com\/CategoriaOutros\/"]},{"@type":"Person","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40","name":"Categoria: Outros","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g","caption":"Categoria: Outros"},"sameAs":["http:\/\/categoriaoutros.com.br"],"url":"https:\/\/categoriaoutros.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/11761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11761"}],"version-history":[{"count":16,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/11761\/revisions"}],"predecessor-version":[{"id":15843,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/11761\/revisions\/15843"}],"wp:attachment":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}