OpenTelemetry Collectorサーバーまたは仮想マシンに直接インストールして、セルフホスト型Elasticsearchを監視します。 New Relicインフラストラクチャのセットアップと監視の要件に合わせた柔軟なデプロイメント オプションを提供します。
コレクターの配布方法は2種類から選択できます。
- NRDOT: OpenTelemetryのNew Relicディストリビューション
- OTel Collector Contrib:コミュニティ提供のコンポーネントを備えた標準のOpenTelemetry Collector
インストールオプション
ニーズに合ったコレクターの分配方法を選択してください。
重要
Elasticsearch監視に対するNRDOTのサポートは近日中に開始されます。 最新情報をお見逃しなく!
あなたが始める前に
OTel Collector Contrib を設定する前に、以下のものを用意してください。
必要なアクセス権限:
あなたのNew Relic
ホストマシン上でroot権限またはsudo権限が必要です
monitorまたはmanage権限を持つElasticsearchクラスタ管理者権限 (詳細については、 Elasticsearchセキュリティ権限のドキュメントを参照してください)システム要件:
Elasticsearchバージョン 7.16 以降- この統合には最新のElasticsearchクラスタが必要です
ネットワーク接続- New RelicのOTLP取り込みエンドポイントへのHTTPSアウトバウンド接続(ポート443)
設定値の準備ができました:
Elasticsearchエンドポイント- ElasticsearchのURL (例:
http://localhost:9200)Cluster名- New Relic内のクラスターの一意の識別子
重要
先に進む前に、ホストにOpenTelemetry Collector Contribがインストールされている必要があります。systemdサービスユニットが正しく作成されるように、公式パッケージ(.debまたは.rpm)を使用してインストールすることをお勧めします。
Elasticsearchの監視を設定する
OTel Collector Contribをインストールしたら、コレクターのデフォルト設定ファイルをElasticsearchの監視設定ファイルに置き換えてください。これにより、Elasticsearchのメトリクス収集が可能になります。ホストのメトリクスとログはオプションであり、個別に追加できます。
設定ファイルは以下の場所にあります。 /etc/otelcol-contrib/config.yaml
ヒント
デフォルト設定をバックアップする:設定ファイルを変更する前に、デフォルト設定を保持するためにバックアップコピーを作成してください。
$sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backupコレクターを設定するには:
root権限またはsudo権限を使用して、テキストエディタで設定ファイルを開きます。
bash$sudo nano /etc/otelcol-contrib/config.yaml既存のコンテンツをすべて削除し、次のElasticsearch監視用の設定に置き換えます。
重要
endpoint値を Elasticsearch クラスターのエンドポイントに置き換え、プロセッサブロックのelasticsearch.cluster.nameNew Relic でクラスターを識別するための一意の名前に更新してください。receivers:elasticsearch:endpoint: "http://localhost:9200"collection_interval: 15smetrics:elasticsearch.os.cpu.usage:enabled: trueelasticsearch.cluster.data_nodes:enabled: trueelasticsearch.cluster.health:enabled: trueelasticsearch.cluster.in_flight_fetch:enabled: trueelasticsearch.cluster.nodes:enabled: trueelasticsearch.cluster.pending_tasks:enabled: trueelasticsearch.cluster.shards:enabled: trueelasticsearch.cluster.state_update.time:enabled: trueelasticsearch.index.documents:enabled: trueelasticsearch.index.operations.merge.current:enabled: trueelasticsearch.index.operations.time:enabled: trueelasticsearch.node.cache.count:enabled: trueelasticsearch.node.cache.evictions:enabled: trueelasticsearch.node.cache.memory.usage:enabled: trueelasticsearch.node.shards.size:enabled: trueelasticsearch.node.cluster.io:enabled: trueelasticsearch.node.documents:enabled: trueelasticsearch.node.disk.io.read:enabled: trueelasticsearch.node.disk.io.write:enabled: trueelasticsearch.node.fs.disk.available:enabled: trueelasticsearch.node.fs.disk.total:enabled: trueelasticsearch.node.http.connections:enabled: trueelasticsearch.node.ingest.documents.current:enabled: trueelasticsearch.node.ingest.operations.failed:enabled: trueelasticsearch.node.open_files:enabled: trueelasticsearch.node.operations.completed:enabled: trueelasticsearch.node.operations.current:enabled: trueelasticsearch.node.operations.get.completed:enabled: trueelasticsearch.node.operations.time:enabled: trueelasticsearch.node.shards.reserved.size:enabled: trueelasticsearch.index.shards.size:enabled: trueelasticsearch.os.cpu.load_avg.1m:enabled: trueelasticsearch.os.cpu.load_avg.5m:enabled: trueelasticsearch.os.cpu.load_avg.15m:enabled: trueelasticsearch.os.memory:enabled: truejvm.gc.collections.count:enabled: truejvm.gc.collections.elapsed:enabled: truejvm.memory.heap.max:enabled: truejvm.memory.heap.used:enabled: truejvm.memory.heap.utilization:enabled: truejvm.threads.count:enabled: trueelasticsearch.index.segments.count:enabled: trueelasticsearch.index.operations.completed:enabled: trueelasticsearch.node.script.cache_evictions:enabled: falseelasticsearch.node.cluster.connections:enabled: falseelasticsearch.node.pipeline.ingest.documents.preprocessed:enabled: falseelasticsearch.node.thread_pool.tasks.queued:enabled: falseelasticsearch.cluster.published_states.full:enabled: falsejvm.memory.pool.max:enabled: falseelasticsearch.node.script.compilation_limit_triggered:enabled: falseelasticsearch.node.shards.data_set.size:enabled: falseelasticsearch.node.pipeline.ingest.documents.current:enabled: falseelasticsearch.cluster.state_update.count:enabled: falseelasticsearch.node.fs.disk.free:enabled: falsejvm.memory.nonheap.used:enabled: falsejvm.memory.pool.used:enabled: falseelasticsearch.node.translog.size:enabled: falseelasticsearch.node.thread_pool.threads:enabled: falseelasticsearch.cluster.state_queue:enabled: falseelasticsearch.node.translog.operations:enabled: falseelasticsearch.memory.indexing_pressure:enabled: falseelasticsearch.node.ingest.documents:enabled: falsejvm.classes.loaded:enabled: falsejvm.memory.heap.committed:enabled: falseelasticsearch.breaker.memory.limit:enabled: falseelasticsearch.indexing_pressure.memory.total.replica_rejections:enabled: falseelasticsearch.breaker.memory.estimated:enabled: falseelasticsearch.cluster.published_states.differences:enabled: falsejvm.memory.nonheap.committed:enabled: falseelasticsearch.node.translog.uncommitted.size:enabled: falseelasticsearch.node.script.compilations:enabled: falseelasticsearch.node.pipeline.ingest.operations.failed:enabled: falseelasticsearch.indexing_pressure.memory.limit:enabled: falseelasticsearch.breaker.tripped:enabled: falseelasticsearch.indexing_pressure.memory.total.primary_rejections:enabled: falseelasticsearch.node.thread_pool.tasks.finished:enabled: falseprocessors:memory_limiter:check_interval: 60slimit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}cumulativetodelta: {}resource/cluster_name_override:attributes:- key: elasticsearch.cluster.namevalue: "<elasticsearch-cluster-name>"action: upsertresourcedetection:detectors: [ system ]system:resource_attributes:host.name:enabled: truehost.id:enabled: trueos.type:enabled: truebatch:timeout: 10ssend_batch_size: 1024attributes/cardinality_reduction:actions:- key: process.pidaction: delete- key: process.parent_pidaction: deletetransform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")exporters:otlphttp:endpoint: ${env:NEWRELIC_OTLP_ENDPOINT}headers:api-key: ${env:NEWRELIC_LICENSE_KEY}service:pipelines:metrics/elasticsearch:receivers: [elasticsearch]processors: [memory_limiter, resourcedetection, resource/cluster_name_override, attributes/cardinality_reduction, cumulativetodelta, transform/metadata_nullify, batch]exporters: [otlphttp](オプション)認証とSSLを使用したセキュアなElasticsearchの場合、受信側の設定を変更します。
receivers:elasticsearch:endpoint: "https://localhost:9200"username: "your_elasticsearch_username"password: "your_elasticsearch_password"tls:ca_file: "/etc/elasticsearch/certs/http_ca.crt"insecure_skip_verify: falsecollection_interval: 15s(オプション)ホストメトリクスを収集するには、hostmetricsレシーバーを追加します。
receivers:hostmetrics:collection_interval: 60sscrapers:cpu:metrics:system.cpu.utilization: {enabled: true}system.cpu.time: {enabled: true}load:metrics:system.cpu.load_average.1m: {enabled: true}system.cpu.load_average.5m: {enabled: true}system.cpu.load_average.15m: {enabled: true}memory:metrics:system.memory.usage: {enabled: true}system.memory.utilization: {enabled: true}disk:metrics:system.disk.io: {enabled: true}system.disk.operations: {enabled: true}filesystem:metrics:system.filesystem.usage: {enabled: true}system.filesystem.utilization: {enabled: true}network:metrics:system.network.io: {enabled: true}system.network.packets: {enabled: true}process:metrics:process.cpu.utilization:enabled: trueさらに、サービスパイプラインに以下を追加します。
service:pipelines:metrics/host:receivers: [hostmetrics]processors: [memory_limiter, resourcedetection, batch]exporters: [otlphttp](オプション) Elasticsearchのログを収集するには、filelogレシーバーを追加します。コレクターサービス(otelcol-contrib)を実行しているユーザーが、Elasticsearchのログファイルへの読み取りアクセス権を持っていることを確認してください。
Linux (ホスト) で Elasticsearch を実行している場合:
receivers:filelog:include:- /var/log/elasticsearch/elasticsearch.log- /var/log/elasticsearch/*.logDocker で Elasticsearch を実行している場合:
receivers:filelog:include:- /var/lib/docker/containers/*/*.logoperators:- type: movefrom: attributes.logto: bodyさらに、サービスパイプラインに以下を追加します。
service:pipelines:logs:receivers: [filelog]processors: [resource/cluster_name_override]exporters: [otlphttp](オプション)メトリクスにカスタムメタデータタグを追加するには、
resource/static_overrideプロセッサを使用します。processors:resource/static_override:attributes:- key: envvalue: "production"action: upsertservice:pipelines:metrics/elasticsearch:receivers: [elasticsearch]processors: [memory_limiter, resourcedetection, resource/cluster_name_override, resource/static_override, attributes/cardinality_reduction, cumulativetodelta, transform/metadata_nullify, batch]exporters: [otlphttp]設定ファイルを保存します。
環境変数を設定します。
systemd オーバーライド ディレクトリを作成します。
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d環境設定ファイルを作成します。
bash$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf$[Service]$Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"$Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY_HERE"$Environment="NEW_RELIC_MEMORY_LIMIT_MIB=100"$EOF設定をあなたの値で更新してください。
https://otlp.nr-data.net:4318リージョンのエンドポイントに置き換えますYOUR_LICENSE_KEY_HERE実際の New Relic ライセンスキーに置き換えてください。100コレクターの希望するメモリ制限値(MiB単位)に置き換えてください(デフォルト:100 MiB)。環境のニーズに合わせて調整してください
変更を適用するには、OTel Collector Contribを再起動してください。
bash$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contrib.service
データ収集を確認する
OTel Collector Contribが実行され、エラーなくデータを収集していることを確認してください。
コレクターサービスのステータスを確認してください。
bash$sudo systemctl status otelcol-contrib.serviceエラーがないかコレクター ログを監視します。
bash$sudo journalctl -u otelcol-contrib.service -fElasticsearchとNew Relicへの接続が正常に行われていることを確認してください。エラーが表示された場合は、トラブルシューティングガイドを参照してください。
ヒント
APMとElasticsearchを関連付ける: APMアプリケーションとElasticsearchを接続するには、 APMメトリクスにリソース プロパティes.cluster.name="your-cluster-name"を含めます。 これにより、New Relic 内でのサービス間の可視性とトラブルシューティングの高速化が可能になります。
Elasticsearchデータを表示する
コレクターが起動してデータ送信が開始されると、Elasticsearchのメトリクスを調べたり、カスタムクエリを作成したり、New Relicで監視ダッシュボードを設定したりできるようになります。
データへのアクセス、 NRQL書き込みの作成、およびアラートの構成の詳細については、 Elasticsearchデータの検索と書き込み」を参照してください。
トラブルシューティング
インストール中に問題が発生した場合、またはNew Relicにデータが表示されない場合は、一般的な問題に対する段階的な解決策についての包括的なトラブルシューティング ガイドを参照してください。