# Collectd

O collectd é um daemon do Unix que coleta, transfere e armazena dados de desempenho de computadores e equipamentos de rede. Os dados adquiridos destinam-se a ajudar os administradores de sistemas a manter uma visão geral dos recursos disponíveis para detectar gargalos existentes ou iminentes.
A primeira versão do daemon foi escrita em 2005 por Florian Forster e foi desenvolvida como um projeto de código aberto livre. Outros desenvolvedores escreveram melhorias e extensões ao software que foram incorporadas ao projeto. A maioria dos arquivos do código-fonte são licenciados sob os termos da Licença pública geral GNU, versão 2 (GPLv2), os arquivos restantes são licenciados sob outras licenças de código aberto.

## Operação

O collectd usa um esquema modular [en]: o daemon em si implementa apenas a infraestrutura para filtrar e retransmitir dados, bem como funções auxiliares, e requer pouquíssimos recursos, ele ainda é executado em dispositivos embarcados com o OpenWrt. A aquisição e o armazenamento de dados são tratados por plugues na forma de objetos compartilhados. Dessa forma, o código específico de um sistema operacional é mantido fora do daemon real. Os plugues podem ter suas próprias dependências, por exemplo, um sistema operacional específico ou bibliotecas de software. Outras tarefas executadas pelos plugues incluem o processamento de "notificações" e mensagens de registro [en].
Os plugues de aquisição de dados, chamados de "plugues de leitura" na documentação do collectd, podem ser divididos em três categorias:
* Os plugues de sistema operacional coletam informações como a utilização da unidade de processamento central, o uso da memória ou o número de usuários conectados a um sistema. Esses plugues geralmente precisam ser portados para cada sistema operacional. Nem todos esses plugues estão disponíveis para todos os sistemas operacionais.
* Os plugues de aplicativo coletam dados de desempenho de ou sobre um aplicativo em execução no mesmo computador ou em um computador remoto, por exemplo, o servidor HTTP Apache. Esses plugues geralmente usam bibliotecas de software, mas geralmente são independentes do sistema operacional.
* Os plugues genéricos oferecem funções básicas que o usuário pode empregar para executar tarefas específicas. Exemplos são consultas de equipamentos de rede usando o Protocolo de gerenciamento de rede simples ou execução de programas ou scripts personalizados.
Os chamados "plugues de gravação" oferecem a possibilidade de armazenar os dados coletados em disco usando arquivos RRD ou CSV, ou enviar dados pela rede para uma instância remota do daemon.

## Rede

Incluído na distribuição do código-fonte do collectd está o chamado plugue de "rede", que pode ser usado para enviar e receber dados de/para outras instâncias do daemon. Em uma configuração de rede típica, o daemon seria executado em cada máquina hospedeira (chamada de "cliente") monitorada com o plugue de rede configurado para enviar os dados coletados para um ou mais endereços de rede. Em um ou mais chamados "servidores", o mesmo daemon seria executado, mas com uma configuração diferente, para que o plugue de rede recebesse dados em vez de enviá-los. Muitas vezes, o plugue RRDtool é usado em servidores para armazenar os dados de desempenho.
O plugues usa um protocolo de rede binário sobre o Protocolo de datagrama do usuário. Ambos, o IPv4 e o IPv6 são suportados como camada de rede. É possível usar endereçamento unicast (ponto a ponto) e multicast (ponto a grupo). Autenticação e criptografia foram adicionadas ao protocolo com a versão 4.7.0, lançada em maio de 2009.