https://collectd.org/
CollectDは、システム情報を定期的に収集し、さまざまな方法で値を保存および監視するメカニズムを提供する小さなデーモンです。
CollectDは次のデータを収集できます。
Apache Apache Serverの利用:転送されたバイト数、処理されたリクエストの数、詳細なスコアボード統計
APCUPS APC UPSデーモン:UPS充電、負荷、出力/バッテリー電圧など。
Mac OS X / Darwinを実行しているMacのApple_Sensorsセンサー:温度、ファン速度、電圧センサー。
Aquacomputerが作ったAquaero 5水冷却ボードのAquaeroさまざまなセンサー。
上昇に関する統計、ゲーム「World of Warcraft」の無料サーバー。
バロメーターは絶対的な気圧圧力を読み取り、空気圧は海面と温度に低下します。サポートされているセンサーは、FreescaleのMPL115A2とMPL3115とBoschのBMP085です。
バッテリー電荷、-CPIおよびPMUベースのラップトップバッテリーの電流と電圧。
9.5、9,6以降の統計statistics-channelインターフェイスからの名前のサーバーとリゾルバー統計をバインドします。
BuddyInfo統計は、メモリの断片化に関するBuddyInfoファイルの統計。
DmideCodeを使用したSMBIOSなど、ハードウェアサブシステムからデコードされた機能プラットフォーム機能。 https://www.nongnu.org/dmidecode/
CEPH分散型ストレージシステムのCEPH統計。
Linuxに基づくプロセスグループのCGROUPS CPU会計情報。
Chrony Chrony Daemon Statistics:ローカルクロックドリフト、ピアへのオフセットなど。
接続イベントベースのインターフェイスステータス。
nf_conntrackエントリのconntrack番号。
コンテキストスイッチオペレーティングシステムによって行われたコンテキストスイッチの数。
CPU CPU使用率:システム、ユーザー、ニース、アイドル、および関連状態で費やされた時間。
CPUFREQ CPU周波数(スピードステップまたは同様のテクノロジーを備えたラップトップ用)
CPUS睡眠CPU睡眠:サスペンドに費やされる時間(自動的にサスペンドを入力するモバイルデバイス用)
正規表現を使用したWebサイトからのCurl Parse Statistics。
curl_jsonは、curlを介してJSONデータを取得し、ユーザー構成に応じて解析します。
curl_xmlは、curlを介してXMLデータを取得し、ユーザー構成に応じて解析します。
DBIは、さまざまなデータベースでSQLステートメントを実行し、返されたデータを解釈します。
DCPMMは、Intel Optane DC発生記憶(DCPMM)パフォーマンスと健康統計を収集します。
DFマウントポイントの使用(基本的に値df(1)が配信)
ディスクディスク使用:セクターの読み取り/書き込み、読み取り/書き込みアクションの数、IO操作が完了するのにかかった平均時間。
DNS DNSトラフィック:クエリタイプ、応答コード、オペコード、トラフィック/オクテットが転送されます。
DPDKSTAT DPDKインターフェイス統計を収集します。詳細なビルド手順については、docs/build.dpdkstat.mdを参照してください。
このプラグインは、-fstack -protectorなど、コンパイラディフェンスが有効になっていることでコンパイルする必要があります。
DPDK_TELEMETRY DPDKインターフェイス、アプリケーション、およびグローバル統計を収集します。このプラグインは、DPDKSTATプラグインの代替として使用できます。
このプラグインはDPDK 19.08リリースに依存しており、DPDKアプリケーションとともに使用する必要があります。
また、このプラグインはJansson Libraryに依存しています。
DRBDは、個々のDRBDリソース統計を収集します。
電子メール統計:カウント、トラフィック、スパムスコア、チェック。 collectd-email(5)を参照してください。
システムが利用できるエントロピー量のエントロピー量。
叙事詩は、叙事詩メッセージバスからデータを収集します。 https://epics-controls.org
ETHSTATネットワークインターフェイスカード統計。
カスタムプログラムまたはスクリプトによって収集されたexecの値。 collectd-exec(5)を参照してください。
fhcountファイルは統計を処理します。
Filecountは、ディレクトリのファイルの数を数えます。
fscache Linuxファイルシステムベースのキャッシュフレームワーク統計。
Gmondは、神経節インスタンスからマルチキャストトラフィックを受け取ります。
GPSモニターGPS関連データを介してGPSを介して監視します。
gpu_nvidiaモニターnvidia gpu統計NVMLを通じて利用可能。
HDDTEMPDを使用したHDDTEMPハードディスク温度。
巨大なページは、使用済みおよび無料の巨大なページの数を報告しています。巨大な情報の詳細については、https://www.kernel.org/doc/documentation/vm/hugetlbpage.txtをご覧ください。
このプラグインは、-fstack -protectorなど、コンパイラディフェンスが有効になっていることでコンパイルする必要があります。
各IBデバイス上の各ポートのinfiniband属性とカウンター。
Intel_PMU Intel_PMUプラグインは、LinuxカーネルPERFインターフェイスによって提供されるパフォーマンスカウンターを読み取ります。プラグインはJeventsライブラリを使用して、名前付きイベントをパフォーマンスイベントに解決し、パフォーマンスインターフェイスにアクセスします。
Intel_RDT Intel_RDTプラグインは、キャッシュ監視テクノロジー(CMT)、メモリ帯域幅監視(MBM)などのIntel Resource Director Technology(Intel(R)RDT)の監視機能によって提供される情報を収集します。これらの機能は、最終レベルのキャッシュ占有率、ローカルメモリ帯域幅の使用、リモートメモリ帯域幅の使用、クロックあたりの命令などの共有リソースの利用に関する情報を提供します。 https://01.org/packet-processing/cache-monitoring-technology-memory-bandwidth-monitoring-monitoring-allocation-technology-code-data
インターフェイスインターフェイストラフィック:各インターフェイスのオクテット、パケット、エラーの数。
IPC IPCカウンター:使用されたセマフォ、共有メモリの割り当てられたセグメントの数など。
IPMI IPMI(インテリジェントプラットフォーム管理インターフェイス)センサー情報。
IPSTATS IPv4およびIPv6;着信、発信、転送されたカウンター。 FreeBSDのみ。
iptables iptablesのカウンター:特定のiptablesルールと一致したバイト数。
IPVS IPVS接続統計(各サービスと宛先の接続数、オクテット、パケットの数)。 http://www.linuxvirtualserver.org/software/index.htmlを参照してください。
IRQ IRQカウンター:特定の割り込みが発生する頻度。
JavaはJava仮想マシン(JVM)を統合して、Java Bytecodeでプラグインを実行します。詳細なビルド手順については、docs/build.java.mdを参照してください。
最後の1、5、15分間のシステム負荷平均。
LPARは、IBMのパワープロセッサに組み込まれた「論理パーティション」仮想化手法のCPU統計を詳細に説明しました。
LUA LUAプラグインは、LUAインタープリターをCollectdに実装します。これにより、collectdによって実行されるLUAにプラグインを作成することができます。詳細については、Collectd-Lua(5)を参照してください。
Madwifiは、AtherosチップセットとMadwifiドライバーを使用するワイヤレスLANアダプターとインターフェイスから非常に詳細な使用統計を照会します。
MBMONマザーボードセンサー:MBMONを使用した温度、ファン速度、電圧情報(1)。
MCELOGモニターマシンチェックの例外(ハードウェアによって検出され、ソフトウェアに報告されたハードウェアエラー)がMCELOGによって報告され、マシンチェックの例外が検出されたときに適切な通知を生成します。
MD Linux Software-Raidデバイス情報(アクティブ、失敗、スペア、および欠落ディスクの数)。
Memcachec QueryとMemcache Daemon(Memcached)からの解析データ。
memcached分布キャッシュシステムのmemcached統計。 http://www.danga.com/memcached/
メモリメモリの使用率:実行プロセス、ページキャッシュ、バッファキャッシュ、および無料で占めるメモリ。
MICは、CPUの使用、メモリの使用量、温度、および電力消費をIntelから収集します。
MMCは、EMMC 5.0+デバイスによって報告された寿命の推定値と、MicronおよびSandisk EMMCおよびSwissbit MMCカードの場合、悪いブロックや消去カウントや電源サイクルなどのより詳細な健康指標を読み取ります(MANFID = 0X5D OEMID = 0x5342)。
Modbusは、Modbus/TCP対応デバイスの値を読み取ります。複数の「奴隷」からの読み取り値をサポートするため、ゲートウェイデバイスを使用できます。
Metex M-4650CRなどのシリアルマルチメーターによって提供されるマルチメーター情報。
MySQL MariadBおよびMySQL Server統計:発行コマンド、ハンドラーのトリガー、スレッドの使用、クエリキャッシュの使用率、および送信および受信したトラフィック/オクテット。
NetAppプラグインは、NetAppが提供する「ONTAPの管理」SDKを使用して、NetAppストレージシステムからパフォーマンス値をクエリします。
NetLink非常に詳細なLinuxネットワークインターフェイスとルーティング統計。インターフェイス、QDISC、クラス、およびそれを利用できる場合はフィルターに関する(詳細な)情報を取得できます。
ネットワークは、他のホストによって収集された値を受信します。大規模なセットアップでは、1つの専用マシンでデータを収集したい場合があります。これは、選択したプラグインです。
NFS NFS手順:どのNFSコマンドがどの頻度で呼び出されましたか。
nginxは、 nginx (Speak:Engine X)、HTTP、Mail Server/Proxyから統計を収集します。
NTPD NTPデーモン統計:ローカルクロックドリフト、ピアへのオフセットなど。
不均一なメモリアクセスに関するnuma情報(numa)。
ナットネットワークUPSツール:UPS電流、電圧、電源、充電、利用、温度など。UPSD(8)を参照してください。
OLSRDは、「最適化されたリンク状態ルーティング」デーモンからのルーティング情報をクエリします。
Onewire(実験的!)OWFSプロジェクトのOWCAPUライブラリを使用してOnewireセンサーを読みます。 Collectd.conf(5)がこのプラグインが実験的である理由をお読みください。
OpenLDAP OpenLDAPのCN =モニターサブツリーの監視情報を読み取ります。
openvpn-status.log(status-version 2)の各クライアントのopenvpn rxとtx。 http://openvpn.net/index.php/documentation/howto.html
OracleデータベースからのOracleクエリデータ。
ovs_eventsプラグインは、Open Vswitch(OVS)接続されたインターフェイスのリンクステータスを監視し、collectDの値を発送し、OVSデータベースでリンク状態の変更が発生するたびに通知を送信します。 Yajlライブラリをインストールする必要があります。 Open VSwitchをインストールして設定するための詳細な手順、OVSドキュメントを参照してください。 http://openvswitch.org/support/dist-docs/install.rst.html
ovs_statsプラグインは、OVS接続されたブリッジとインターフェイスの統計を収集します。 Yajlライブラリをインストールする必要があります。 Open VSwitchをインストールして設定するための詳細な手順、OVSドキュメントを参照してください。 http://openvswitch.org/support/dist-docs/install.rst.html
PCIE_ERRORS PCI ExpressデバイスのステータスとAER拡張機能からエラーを読み取ります。 https://www.design-reuse.com/articles/38374/pcie-error-logging and-handling-on-typical-soc.html
Perlプラグインは、perl-interpreterをcollectdに実装します。このAPIを使用して、独自のプラグインをPerlに書き込み、任意の値を返すことができます。 collectd-perl(5)を参照してください。
BSDのパケットフィルター「PF」からのPFクエリ統計。
PINBAは、PINBAからタイミング値を受け取り、派遣します。PINBAは、PHPのプロファイリング拡張機能です。
Ping Network LaTency:デフォルトゲートウェイまたは別のホストに到達する時間。
PostgreSQL PostGreSQLデータベース統計:アクティブサーバー接続、トランザクション番号、ブロックIO、テーブル行操作。
PowerDNS PowerDNS Name Server Statistics。
プロセスプロセス数:ランニング、睡眠、ゾンビ、...プロセスの数。
ProceVentは、NetLinkを介してプロセスの開始と終了の対象となります。
プロトコルは、IP、TCP、UDPなどのネットワークプロトコルのさまざまな側面をカウントします。
Python Pythonプラグインは、PythonインタープリターをCollectdに実装します。これにより、毎回重いインタープリターを起動する必要なく、CollectDによって実行されるPythonにプラグインを書き込むことができます。詳細については、collectd-python(5)を参照してください。
ras rasプラグインは、rasdaemonが提供するエラーを収集してカウントします
Redis Redisプラグインは、Uptime、使用済みメモリ、合計接続などを含むRedisサーバーから情報を収集します。
RouterosクエリインターフェイスとRouterosのワイヤレス登録統計。
rrdcached rrdtoolキャッシュデーモン(rrdcached)統計。
LM_SENSORS:電圧、温度、ファンの回転速度を使用してアクセスされるセンサーシステムセンサー。
シリアルインターフェイスのシリアルRXおよびTX。 Linuxのみ;ルート特権が必要です。
SigrokはLibsigrokをバックエンドとして使用して、SigrokがサポートしたデバイスがCollectdに測定値を供給できるようにします。これには、マルチメーター、サウンドレベルメーター、温度計などが含まれます。
Slurmは、Libslurmを使用したパーティションごとのノードとジョブ状態情報、および内部の健康統計を収集します。
Smart Smart Statistics、特にロードサイクルカウント、温度、および悪いセクターを収集します。
SNMPは、SNMP(Simple Network Management Protocol)が、スイッチ、ルーター、温度計、ラック監視サーバーなどのネットワークデバイスを有効にした値を読み取ります。Collectd-SNMP(5)を参照してください。
STATSDはSTATSDサーバーとして機能し、STATSDクライアントからネットワークを介して送信された値を読み取り、これらの値からレートやその他の集計を計算します。
SyseventはRsyslogイベントに耳を傾け、一致した値を提出します。
スワップページをハードディスクに交換するか、OSによってswapと呼ばれるものはありません。
テーブル解析テーブルのような構造化されたファイル。
テールは(テール)ログファイルに続き、線でそれらを解析し、一致した値を提出します。
Tail_CSVはCSV形式で(Tails)ファイルに続き、各ラインを解析し、抽出された値を提出します。
テープバイトと操作テープデバイスで読み書きされます。 Solarisのみ。
TCPConns特定のローカルおよびリモートポートへのTCP接続の数。
TeamSpeak2 TeamSpeak2サーバー統計。
「The Energy Detective」(TED)の値を読むためのTedプラグイン。
サーマルLinux ACPIサーマルゾーン情報。
Tokyotyrantは、実行中の東京Tyrantサーバーのレコード数とファイルサイズの数を読み取ります。
Turbostatは、最新のIntel Turbo-CapableプロセッサでCPU周波数とC状態のレジデンシーを読み取ります。
UBIは、Bad Physical EraseBlocksのカウントと、UBIボリュームの現在の最大消去カウンター値を読み取ります。
アップタイムシステムアップタイム統計。
ユーザーユーザーは現在ログインしています。
httpアクセラレータであるワニスからのさまざまな統計。
仮想マシンからのVirt CPU、メモリ、ディスク、ネットワークI/O統計。
VMEM仮想メモリ統計、例:Page-ins/-outの数またはPageFaultsの数。
Linux vServersが使用するVServerシステムリソース。 http://linux-vserver.org/を参照してください。
ワイヤレスカードのワイヤレスリンク品質。 Linuxのみ。
XENCPU XEN Hypervisor CPU統計。
XMMSビットレートとXMMで再生される音楽の頻度。
ZFSのZFS統計の「適応型置換キャッシュ」(ARC)。
ゾーンは、ソラリス10以下のコンテナあたりのCPU負荷の割合(ゾーン)を測定します
Zookeeper ZookeeperのMNTRコマンドのデータを読み取ります。
出力は、次のプラグインによってさまざまな目的地に書き込まれたり、送信したりできます。
AMQPは、JSONエンコードされたデータを、RabbitMQなどの高度なメッセージキューイングプロトコル(AMQP)0.9.1サーバーに送信します。
AMQP1は、JSONエンコードされたデータを、QPIDディスパッチルーターやApache Artemis Brokerなどの高度なメッセージキューイングプロトコル(AMQP)1.0サーバーに送信します。
CSVは、コンマ分離値(CSV)ファイルに書き込みます。これには多くのディスクスペースが必要ですが、非常にポータブルであり、何でも分析できるほぼすべてのプログラムで分析できます。マイクロソフトのエクセルでさえ。
GRPC GRPCフレームワークを使用して、ネットワーク上で値を送信および受信します。
LUA LUAプラグインを使用してLUAに書き込みプラグインを実装することができます。詳細については、Collectd-Lua(5)を参照してください。
MQTTは、MQTTトピックを公開および購読しています。
ネットワークデータをリモートホストに送信して、データを何らかの形で保存します。これは、専用マシンによってデータを保存する必要がある大規模なセットアップに役立ちます。
Perlもちろん、値はPerlに書かれたプラグインにも伝播されます。そのため、あえて考えていなかったプラグインで簡単に奇妙なことをすることができます;)Collectd-Perl(5)を参照してください。
Python Pythonプラグインを使用してPythonに書き込みプラグインを実装することができます。詳細については、collectd-python(5)を参照してください。
rrdtoolキャッシュデーモン(rrdcached)を使用して、rrd-robin-database(rrd)ファイルへのrrdcached出力 - rrdcached(1)を参照してください。そのデーモンは、 rrdtoolプラグインによって行われたキャッシュの一般的な実装を提供します。
rrdtool Riblrdを使用したRund-Robin-Database(RRD)ファイルへの出力。 rrdtool(1)を参照してください。これは、そのような価値の最も人気のある目的地である可能性があります。 Rrd-Filesの更新はいくぶん高価であるため、このプラグインはファイルへの更新をキャッシュし、一度に多数の更新を記述することができ、システムのロードが大幅に削減されます。
SNMP_AGENTは、SNMPマスターエージェントからクエリを受信および処理し、読み取りプラグインによって収集されたデータを返します。構成ファイルで指定されたOIDのみのリクエストを処理します。 SNMPクエリを処理するために、プラグインはCollectDからデータを取得し、要求された値をCollectDの内部形式からSNMP形式に変換します。
UnixSockは、必要なときにいつでもUnixSockプラグインから値を照会できます。それがどのように行われるかについての説明については、Collectd-unixsock(5)をお読みください。
write_graphiteは、TCPまたはUDPを使用してグラファイトの貯蔵層であるカーボンにデータを送信します。ロギングの送信エラーを避けるように構成できます(特にUDPを使用する場合に役立ちます)。
write_http collectdによって収集された値を、http postリクエストを使用してWebサーバーに送信します。送信されたデータは、execプラグインによって理解される形式であるか、JSONでフォーマットされています。
write_kafkaは、分散キューであるApache Kafkaにデータを送信します。
write_logはログにデータを書き込みます
write_mongodb nosqlデータベースのmongodbにデータを送信します。
write_prometheusは、prometheusのcollectd_exporterと互換性のある形式で、埋め込まれたHTTPサーバーを使用して値を公開します。
write_redisは、値をRedis Key-Valueデータベースサーバーに送信します。
write_riemannは、ストリーム処理および監視システムであるRiemannにデータを送信します。
write_sensuは、SensuクライアントローカルTCPソケットを介して、ストリーム処理および監視システムであるSensuにデータを送信します。
write_syslogは、TCPを使用してSyslog形式でデータを送信します。ここで、メッセージにはHumanまたはJSON形式のメトリックが含まれています。
write_tsdbは、スケーラブルなマスター、共有状態時系列データベースであるデータを送信します。
ロギングは、プラグインによって提供されるCollectDのすべてと同様です。次のプラグインは、何が起こっているのかを知らせ続けています。
logfileは、ログメッセージをファイルまたはstdout/stderrに書き込みます。
Perlログメッセージは、Perlで記述されたプラグインにも伝播されます。 collectd-perl(5)を参照してください。
Python Pythonプラグインを使用してPythonにログプラグインを実装することができます。詳細については、collectd-python(5)を参照してください。
Syslogは、標準のUnixロギングメカニズム、Syslogにログを記録します。
log_logstashは、logstash jsonイベントとしてフォーマットされたログメッセージを書き込みます。
通知は、次のプラグインによって処理できます。
notify_desktopデスクトップ通知仕様で定義されているように、デスクトップ通知を通知デーモンに送信します。実際に通知を表示するには、通知デーモンが必要です。 http://www.galago-project.org/specs/notification/を参照してください。
notify_emailは、構成された受信者に通知メッセージを含む電子メールを送信します。
Notify_nagiosは、パッシブチェック結果として通知をローカルナギオスインスタンスに送信します。
Execプログラムまたはスクリプトを実行して、通知を処理します。 collectd-exec(5)を参照してください。
logfileは、通知メッセージをファイルまたはstdout/stderrに書き込みます。
ネットワークは、通知をリモートホストに送信して、どういうわけかそれを処理します。
Perl通知は、Perlに記述されたプラグインにも伝播されます。 collectd-perl(5)を参照してください。
Python Pythonプラグインを使用してPythonに通知プラグインを実装することができます。詳細については、collectd-python(5)を参照してください。
「フィルターチェーン」インフラストラクチャと「一致」および「ターゲット」を使用して、バリュー処理を制御できます。次のプラグインが利用可能です。
Match_empty_counter現在ゼロであるカウンター値を一致させます。
ホスト名のハッシュ関数を使用したMatch_Hashed一致値。
正規表現に基づいた識別子によるMatch_regexの値。
無効なタイムスタンプを使用したMatch_timediffの値。
Match_Valueデータソースの値で値を選択します。
Target_Notification通知を作成および発送します。
Target_Replace正規表現を使用して識別子の部分を置き換えます。
Target_scaleスケール(乗算)値は、任意の値で値を使用します。
daterg_setセット(上書き)識別子の部分全体。
その他のプラグイン:
集約は、パターンまたは正規表現に基づいて複数の値リストを選択し、それらから新しい集約値リストを作成します。
しきい値は、構成されたしきい値に対して値をチェックし、値が範囲外である場合に通知を作成します。詳細については、collectd-threshold(5)を参照してください。
UUIDは、ホスト名を一意の識別子に設定します。これは、各クライアントが別の物理ホストに移行する可能性があり、プロセスの1つ以上の名前の変更を行う可能性があるセットアップを目的としています。
パフォーマンス:collectdはデーモンとして実行されているため、何度も何度も立ち上がるのにあまり時間を費やすことはありません。 Execプラグインを除き、プロセスはフォークされていません。 Rrdtoolやネットワークプラグインなどの出力プラグインでのキャッシュにより、リソースが効率的に使用されるようになります。また、collectDはマルチスレッドプログラムされているため、ハイパースレッドおよびマルチコアプロセッサの恩恵を受け、1つのプラグインだけがio操作が完了するのを待っている場合にデーモンがアイドル状態ではないことを確認します。
セットアップしたら、メンテナンスはほとんど必要ありません。セットアップは可能な限り簡単に保持され、ほとんどのユーザーにとってデフォルト値は問題ありません。
collectdの構成ファイルはsysconfdir/collectd.confにあります。内蔵デフォルトのリストについては、 collectd -hを実行します。オプションのリストと構文の説明についてはcollectd.conf(5)参照してください。
csvまたはrrdtoolプラグインがロードされると、ファイルに値を書き込みます。これらのファイルの通常の場所は/var/lib/collectdの下です。
一部のプラグインを使用する場合、rootのみが他のホストをpingするのに必要なCraft ICMPパッケージなど、特定のことを実行できるため、CollectDはユーザールートとして実行する必要があります。 CollectDは、貴重なファイルの上書きに使用できるため、SetUidルートをインストールしないでください!
グラフを生成するためのサンプルスクリプトはcontrib/ソースパッケージ、またはほとんどの分布で/usr/share/doc/collectdに近い場所に存在します。これらのスクリプトは、あなた自身の実験の出発点として意図されていることに注意してください。それらのいくつかは、 RRDs Perlモジュールを必要とします。 (Debianのlibrrds-perl )より洗練されたソリューションを書いた場合は、それを共有してください。
自動的に作成されたRRDファイルのRRAは、指定されたstepとheartbeat設定によって異なります。これらの設定を変更する場合は、ファイルを再作成し、すべてのデータを失う必要がある場合があります。値を変更するときは、そのことに注意して、rrdtool(1)のマンページを徹底的に読んでください。
dnsプラグインを使用している場合、 chkrootkit(1) collectdパケットsniffer( <iface>: PACKET SNIFFER(/usr/sbin/collectd[<pid>]) )として報告します。プラグインは、ポート53のすべてのUDPパケットをキャプチャして、DNSトラフィックを分析します。この場合、CollectDは正当なスニファーであり、レポートは誤検知と見なされるべきです。ただし、これが本当にcollectdであり、他の違法なスニファーではないことを確認することをお勧めします。
ソースからcollectdをコンパイルするには、次のことが必要です。
通常の容疑者:Cコンパイラ、リンカー、プリプロセッサ、make、...
CollectDは、いくつかの一般的なC99機能(複合リテラルや混合宣言など)を使用しているため、C99互換性のあるコンパイラが必要です。
DebianとUbuntuでは、「ビルドエッセンシャル」パッケージが必要なものをすべて取り込む必要があります。
Posix-threads(pthread)実装。いくつかの統計を収集するのは遅いため(ネットワーク接続、スローデバイスなど)、collectDは並行しています。 POSIXスレッドインターフェイスが使用されており、すべてのプラットフォームのさまざまな実装にある必要があります。
GITリポジトリから構築する場合、Flex(トークネイザー)とバイソン(パーサージェネレーター)が必要です。リリースターボールには、生成されたファイルが含まれています。その場合、これらのパッケージは必要ありません。
aquaeroプラグインで使用されるaerotools-ng(オプション)。現在、 aerotools-ng Toolkitで使用されているlibaquaero5ライブラリは、共有オブジェクトとしてコンパイルされておらず、インストールルーチンを備えていません。したがって、 aerotools-ngプロジェクトのソースディレクトリにcollectdのconfigureスクリプトをポイントする必要があります。 https://github.com/lynix/aerotools-ng
corefoundation.framework and iokit.framework(オプション)一般的にダーウィンとapple_sensorsプラグインをコンパイルするため。 http://developer.apple.com/corefoundation/
gpu_nvidiaプラグインhttps://developer.nvidia.com/cuda-downloadsで使用されるcuda(オプション)
smartプラグインで使用されるlibatasmart(オプション)。 http://git.0pointer.de/?p=libatasmart.git
LIBCAP(オプション) turbostatプラグインは、オプションでLinux機能サポートを構築できます。これにより、完全な特権要件(別名はルートとして実行されています)を回避して値を読み取ることができます。 http://sites.google.com/site/fulledcapable/
oracleプラグインで使用されるlibclntsh(オプション)。
redisプラグインで使用されるLibhiredis(オプション)。 0.10.0以上のバージョンが必要であることに注意してください。 https://github.com/redis/hiredis
libcurl(オプション) apache 、 ascent 、 bind 、 curl 、 curl_json 、 curl_xml 、 nginx 、またはwrite_httpプラグインを使用する場合。 http://curl.haxx.se/
dbiプラグインがさまざまなデータベースに接続するために使用されるlibdbi(オプション)。 http://libdbi.sourceforge.net/
notify_emailプラグイン用のlibesmtp(オプション)。 http://www.stafford.uklinux.net/libesmtp/
gmondプラグインによって使用されるLibganglia(オプション)は、神経節から受信したデータを処理します。 http://ganglia.info/
grpcプラグインで使用されるlibgrpc(オプション)。 GRPCには、C ++ 11標準をサポートするC ++コンパイラが必要です。 https://grpc.io/
暗号化と認証にnetworkプラグインで使用されるlibgcrypt(オプション)。 http://www.gnupg.org/
gpsプラグインで使用されるLIBGPS(オプション)。 http://developer.berlios.de/projects/gpsd/
プラグインbarometerに使用されるLIBI2C-DEV(オプション)は、ユーザースペースI2C開発用のi2c-dev.hヘッダーファイルのみを提供します。
iptablesカウンターを照会するためのlibiptc(オプション)。 http://netfilter.org/
Libjansson(オプション)解析JSONデータ。これは、 capabilitiesとdpdk_telemetryプラグインに使用されます。 http://www.digip.org/jansson/
Libjevents(オプション)Jeventsライブラリは、LinuxカーネルPerfインターフェイスにアクセスするためにintel_pmuプラグインによって使用されます。注:ライブラリは、intel_pmu共有オブジェクトに正しくリンクするために、 -fPICフラグを使用して構築する必要があります。 https://github.com/andikleen/pmu-tools
Java仮想マシン(JVM)をカプセル化するLIBJVM(オプション)ライブラリ。このライブラリは、Java Bytecodeを実行するためにjavaプラグインによって使用されます。詳細なビルド手順については、docs/build.java.mdを参照してください。 http://openjdk.java.net/(およびその他)
openldapプラグインで使用されるLIBLDAP(オプション)。 http://www.openldap.org/
luaプラグインで使用されるLiblua(オプション)。現在、LUA 5.1以降がサポートされています。 https://www.lua.org/
memcacheデーモンに接続するためにmemcachecプラグインによって使用されるLibmemcached(オプション)。 http://tangent.org/552/libmemcached.html
libmicrohttpd(オプション)write_prometheusプラグインがHTTPデーモンを実行するために使用します。 http://www.gnu.org/software/libmicrohttpd/
netlinkプラグインで使用されるlibmnl(オプション)。 http://www.netfilter.org/projects/libmnl/
modbusプラグインがModbus/TCPデバイスと通信するために使用されるLibmodbus(オプション)。 modbusプラグインは、ライブラリのバージョン2.0.3で動作します。これは、他のバージョンがきれいにコンパイルされる場合と頻繁に変更されるためです。 http://www.libmodbus.org/
libmysqlclient(オプション) mysqlプラグインでは驚くことではありません。 http://dev.mysql.com/
netappプラグインに必要なlibnetApp(オプション)。このライブラリは、NetAppが発行した「ONTAP SDKの管理」の一部です。
snmpおよびsnmp_agentプラグイン用のLibNetSNMP(オプション)。 http://www.net-snmp.org/
libnetsnmpagent(オプション) snmp_agentプラグインに必要です。 http://www.net-snmp.org/
notify_desktopプラグイン用のlibnotify(オプション)。 http://www.galago-project.org/
IPMIデバイスを証明するためにipmiプラグインによって使用されるLibopenipmi(オプション)。 http://openipmi.sourceforge.net/
pingプラグインがICMPパケットを送信および受信するために使用するLiboping(オプション)。 http://octo.it/liboping/
onewireプラグインで使用されるLibowcapi(オプション)Onewireセンサー(またはOwserver(1)デーモン)の値を読み取ります。 http://www.owfs.org/
libpcap(オプション) dnsプラグインでパケットをキャプチャするために使用されます。 http://www.tcpdump.org/
さまざまなプラグインで使用されるlibperfstat(オプション)AIXの下で統計を収集します。
Libperl(オプション) perlプラグインで明らかに使用されています。ライブラリは、iThreadサポート(Perl 5.6.0で導入)でコンパイルする必要があります。 http://www.perl.org/
dcpmmプラグインで使用されるlibpmwapi(オプション)。ライブラリGithub:https://github.com/intel/intel-pmwatch dcpmmプラグインについて言及したpmwatchビルドの手順に従ってください。インストールパスを使用して、ここで依存関係を解決します。
libpq(オプション) postgresqlプラグインで使用されるPostgreSQL Cクライアントライブラリ。 http://www.postgresql.org/
libpqos(オプション) intel_rdtプラグインが使用するIntel(R)リソースディレクターテクノロジーのPQOSライブラリ。 https://github.com/01org/intel-cmt-cat
libprotobuf、protoc 3.0+(オプション) grpcプラグインで使用して、CollectDのProtobufベースのネットワークプロトコルのネットワークパケットを処理するサービススタブとコードを生成します。 https://developers.google.com/protocol-buffers/
pinbaプラグインで使用されるpinba php拡張機能によって送信されたネットワークパケットのパーサーを生成するために使用されます。 http://code.google.com/p/protobuf-c/
pythonプラグインで使用されるLibpython(オプション)。現在、Python 2.6以降とPython 3がサポートされています。 http://www.python.org/
AMQP 1.0接続用のamqp1プラグインで使用されるLibQPid-Proton(オプション)、たとえばQdrouterdに。 http://qpid.apache.org/
AMQP 0.9.1接続のamqpプラグインで使用されるLibrabbitmq(オプション;「rabbitmq-c」とも呼ばれます)、たとえばrabbitmqに。 http://hg.rabbitmq.com/rabbitmq-c/
write_kafkaプラグインがメッセージを作成してKafkaブローカーに送信するために使用されるLibrdkafka(オプション、「rdkafka」とも呼ばれます)。 https://github.com/edenhill/librdkafka
routerosプラグインで使用されるLibrouteros(オプション) Routerosを実行するデバイスに接続します。 http://octo.it/librouteros/
rrdtoolとrrdcachedプラグインが使用するLibrrd(オプション)。後者には、Rrdtoolのバージョン1.3の後に追加されたRrdtoolクライアントサポートが必要です。バージョン1.0、1.2、および1.3は、 rrdtoolプラグインで動作することが知られています。 http://oss.oetiker.ch/rrdtool/
Librt、Libsocket、Libkstat、Libdevinfo(オプション)システム機能を提供するさまざまな標準Solarisライブラリ。 http://developers.sun.com/solaris/
lm_sensorsから読み取るためのLibsensors(オプション)、 sensorsプラグインを参照してください。 http://www.lm-sensors.org/
libsigrok(オプション) sigrokプラグインで使用。さらに、 libsigrok 、 libusb 、 libftdi 、 libudevのglib 、 libzip 、およびオプション(どのドライバーが有効になっているかによって異なります)に依存します。
libslurm(オプション) slurmプラグインで使用。 https://slurm.schedmd.com/
rasプラグインで使用されるLIBSQLITE3(オプション)。 https://sqlite.org/
Linuxおよび/またはSolaris以外のシステムに関する統計を収集するために、さまざまなプラグインで使用されるLibstatgrab(オプション)。 http://www.i-scream.org/libstatgrab/
tokyotyrantプラグインで使用されるlibtokyotyrant(オプション)。 http://1978th.net/tokyotyrant/
libupsclient/nut(オプション)ナットのupsdをクエリするnutプラグイン用。 http://networkupstools.org/
libvirt(オプション)仮想マシンから統計を収集します。 http://libvirt.org/
LIBXML2(オプション)XMLデータの解析。これは、 ascent 、 bind 、 curl_xml 、およびvirtプラグインに必要です。 http://xmlsoft.org/
xencpuプラグインで使用されるLibxen(オプション)。 http://xenbits.xensource.com/
libxmms(オプション)http://www.xmms.org/
Libyajl(オプション)JSONデータを解析します。これは、 ceph 、 curl_json 、 ovs_events 、 ovs_stats 、 log_logstashプラグインに必要です。 http://github.com/lloyd/yajl
Libvarnish(オプション)は、ワニスインスタンスから統計を取得します。これは、 varnishプラグインに必要です。 http://varnish-cache.org
write_riemannプラグイン用のriemann-c-client(オプション)。 https://github.com/algernon/riemann-c-client
デフォルト設定でCollectDを構成、ビルド、インストールするには、 ./configure && make && make install実行します。 For a complete list of configure options and their description, run ./configure --help .
By default, the configure script will check for all build dependencies and disable all plugins whose requirements cannot be fulfilled (any other plugin will be enabled). To enable a plugin, install missing dependencies (see section Prerequisites above) and rerun configure . If you specify the --enable-<plugin> configure option, the script will fail if the depen- dencies for the specified plugin are not met. In that case you can force the plugin to be built using the --enable-<plugin>=force configure option. This will most likely fail though unless you're working in a very unusual setup and you really know what you're doing. If you specify the --disable-<plugin> configure option, the plugin will not be built. If you specify the --enable-all-plugins or --disable-all-plugins configure options, all plugins will be enabled or disabled respectively by default. Explicitly enabling or disabling a plugin overwrites the default for the specified plugin. These options are meant for package maintainers and should not be used in everyday situations.
By default, collectd will be installed into /opt/collectd . You can adjust this setting by specifying the --prefix configure option - see INSTALL for details. If you pass DESTDIR=<path> to make install , <path> will be prefixed to all installation directories. This might be useful when creating packages for collectd.
Collectd ships with a build.sh script to generate the configure script shipped with releases.
To generate the configure script, you'll need the following dependencies:
The build.sh script takes no arguments.
Collectd can be built on Windows using Cygwin, and the result is a binary that runs natively on Windows. That is, Cygwin is only needed for building, not running, collectd.
You will need to install the following Cygwin packages:
To build, just run the build.sh script in your Cygwin terminal. By default, it installs to "C:/Program Files/collectd". You can change the location by setting the INSTALL_DIR variable:
$ export INSTALL_DIR="C:/some/other/install/directory" $ ./build.sh
または:
$ INSTALL_DIR="C:/some/other/install/directory" ./build.sh
To compile correctly collectd needs to be able to initialize static variables to NAN (Not A Number). Some C libraries, especially the GNU libc, have a problem with that.
Luckily, with GCC it's possible to work around that problem: One can define NAN as being (0.0 / 0.0) and isnan as f != f . However, to test this "implementation" the configure script needs to compile and run a short test program. Obviously running a test program when doing a cross- compilation is, well, challenging.
If you run into this problem, you can use the --with-nan-emulation configure option to force the use of this implementation. We can't promise that the compiled binary actually behaves as it should, but since NANs are likely never passed to the libm you have a good chance to be lucky.
Likewise, collectd needs to know the layout of doubles in memory, in order to craft uniform network packets over different architectures. For this, it needs to know how to convert doubles into the memory layout used by x86. The configure script tries to figure this out by compiling and running a few small test programs. This is of course not possible when cross-compiling. You can use the --with-fp-layout option to tell the configure script which conversion method to assume. Valid arguments are:
* `nothing` (12345678 -> 12345678)
* `endianflip` (12345678 -> 87654321)
* `intswap` (12345678 -> 56781234)
Please use GitHub to report bugs and submit pull requests: https://github.com/collectd/collectd/.詳細については、Convributing.mdを参照してください。
For questions, development information and basically all other concerns please send an email to collectd's mailing list at (list at collectd.org).
For live discussion and more personal contact visit us in IRC, we're in channel #collectd on freenode.
Florian octo Forster (octo at collectd.org), Sebastian tokkee Harl (sh at tokkee.org), and many other authors and contributors.