- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Go のログを Datadog に送信するには、ファイルにログを記録し、Datadog Agent でそのファイルをテールします。オープンソースのロギングライブラリである logrus を使用すると、以下のようなセットアップが可能です。
Datadog は、カスタムパース規則の使用を避け、ログを JSON で生成するようにロギングライブラリをセットアップすることを強くお勧めします。
典型的な Go 構成では、main.go
ファイルを開き、以下のコードに貼り付けます。
package main
import (
log "github.com/sirupsen/logrus"
)
func main() {
// JSONFormatter を使用します
log.SetFormatter(&log.JSONFormatter{})
// logrus を使用して通常どおりイベントをログに記録します
log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout")
}
ログイベントに表示するメタデータを JSON オブジェクトで提供すると、ログにメタデータを追加できます。
メタデータには、hostname
、username
、customers
、metric
などの情報があり、トラブルシューティングや Go アプリケーションの状態の把握に役立ちます。
package main
import (
log "github.com/sirupsen/logrus"
)
func main() {
// JSONFormatter を使用します
log.SetFormatter(&log.JSONFormatter{})
// logrus を使用してイベントをログに記録します
log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout")
// メタデータについては、以下のように、ログステートメント間でフィールドを再利用するのが一般的です
contextualizedLog := log.WithFields(log.Fields{
"hostname": "staging-1",
"appname": "foo-app",
"session": "1ce3f6v"
})
contextualizedLog.Info("Simple event with global metadata")
}
ログ収集が有効になったら、ログファイルを追跡して新しいログを Datadog に送信するカスタムログ収集を設定します。
go.d/
フォルダーを conf.d/
Agent 構成ディレクトリに作成します。
go.d/
に以下の内容で conf.yaml
ファイルを作成します。
##Log section
logs:
- type: file
path: "/path/to/your/go/log.log"
service: go
source: go
sourcecategory: sourcecode
Agent の status サブコマンドを実行し、Checks
セクションで go
を探し、ログが Datadog に正常に送信されることを確認します。
ログが JSON 形式の場合、Datadog は自動的にログメッセージをパースし、ログ属性を抽出します。ログエクスプローラーを使用して、ログを表示し、トラブルシューティングを行うことができます。
このアプリケーションで APM が有効になっている場合、APM Go ロギングのドキュメントに従ってログにトレース ID とスパン ID を自動的に追加することで、アプリケーションログとトレース間の相関関係を改善できます。
DEBUG
、INFO
、WARNING
、FATAL
のログレベルを使用します。Datadog では、Go の FATAL
は Emergency
という重大度レベルにマッピングされます。