Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Django の使用
      • Python でのバックグランドジョブ
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Spring Boot の使用
      • Java の高度なトピック
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • Heroku Enterprise
  • Private Space
  • Private Space Logging

Private Space Logging

日本語 — Switch to English

最終更新日 2022年11月14日(月)

Table of Contents

  • Private Space Logging を有効にする
  • ログ記録設定をチェックする
  • Space のログ記録設定を変更する
  • ログ記録の形式
  • 特定の Heroku アプリからのログメッセージを検索する
  • データの所在
  • ログをキャプチャする
  • Private Space Logging の制限

Private Space Logging は Shield Private Space でのみ利用できます。

Private Space Logging は、アプリレベルではなく Space レベルでのログキャプチャを設定する機能です。Private Space Logging を有効にすると、Space 内のアプリケーション、Heroku Postgres データベース、および Heroku システムサービスからのすべてのログイベントが 1 つのログキャプチャ記録先に転送されます。Space 操作に関連する Heroku API ログもこの同じ記録先に送信されます。Space のログ記録設定とその変更は、管理者のアクセス許可を持つユーザーだけが実行できます。Private Space Logging を有効にした後、Space 内のアプリに対して異なるログ記録先を設定することはできません。

Space レベルでログ記録を管理することには、いくつかの利点があります。

  • 開発者がログの設定を扱う必要がありません。
  • Space 内のすべてのアプリでログ設定の一貫性が保証されます。いずれかのアプリで誤ってログのキャプチャを忘れたり、独自の記録先にログを送信したりする可能性を排除できます。
  • 監査担当者は、Space でログ記録が正しく設定されていることを容易に監査できます。また監査担当者は、開発者が Space 内でアプリを追加および削除してもログ設定が正しいままであることの確証が得られます。

さらに、Private Space Logging を使用すると、ログデータの局所性の制御​が向上します。

Private Space Logging を有効にする

Private Space Logging は、Space を作成するときに有効にします。有効にするには、Space の作成時に 「Log Drain URL」 (ログドレイン URL) を指定します。

$ heroku spaces:create acme-space --shield --team my-team --log-drain-url https://somename:somesecret@loghost.example.com/logpath

Shield Space の作成時にログドレインを指定しない場合、その Shield Private Space では Private Space Logging が有効にならないため、この機能によってもたらされる、コンプライアンスとデータの所在​に関連した機能強化の恩恵は受けられません。

 

Space を作成した後に Private Space Logging をオンにすることはできません。ただし、Private Space Logging を有効にして Space を作成した場合に、後からログドレイン URL を変更することは可能です。

ログ記録設定をチェックする

drains:get​ コマンドを使用して、現在の Space のログ設定を取得できます。この Space の作成時に Private Space Logging を設定しなかった場合、コマンドは This Private Space does not support direct logging.​ (この Private Space は直接ログ記録をサポートしていない) という警告を返します。

$ heroku drains:get --space acme-space
https://loghost.example.com/logpath (<id>)

Space のログ記録設定を変更する

次のコマンドを使用して、いつでも Space のログ記録先を更新できます。

heroku drains:set <log-drain-url> --space <space>

Space のドレイン URL を更新するには、関連付けられた Heroku アカウントに対する管理者のアクセス許可が必要です。

ログ記録の形式

リクエスト

ログは HTTPS POST リクエストとして送信されます。

各リクエスト本体には最大 500 ログ行を含めることができます。 ログバッチが 500 ログ行に達するか、250 ミリ秒が経過するかのいずれか早い方で、Private Space Logging からログドレインにリクエストが送信されます。

ログ行の最大の長さは 10 KB で、それよりも長い行は複数行に分割されます。

つまり、実際にはまずありませんが、Private Space Logging リクエストは最大で 5000 KB に達する可能性があります。 サードパーティのログ記録プロバイダーを使用する場合は、各プロバイダーのログ記録リクエストのサイズ制限を確認してください。

リクエスト本体

リクエスト本体は、RFC6587​ に基づいた一連の syslog 形式メッセージです。リクエストの例を次に示します。

POST /logs HTTP/1.1
Host: example.com
Content-Type: application/logplex-1
Logplex-Msg-Count: 10
User-Agent: log-shuttle/x (y; z; w; v)
Content-Length: 2660

266 <190>1 2017-03-15T16:10:27.008803+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
391 <190>1 2017-03-15T16:10:27.009270+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#memory_total=8.15MB sample#memory_rss=3.95MB sample#memory_cache=2.66MB sample#memory_swap=0.00MB sample#memory_pgpgin=2603pages sample#memory_pgpgout=1423pages sample#memory_quota=2560.00MB
266 <190>1 2017-03-15T16:10:57.008773+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
391 <190>1 2017-03-15T16:10:57.009215+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#memory_total=8.15MB sample#memory_rss=3.95MB sample#memory_cache=2.66MB sample#memory_swap=0.00MB sample#memory_pgpgin=2603pages sample#memory_pgpgout=1423pages sample#memory_quota=2560.00MB
266 <190>1 2017-03-15T16:11:27.008840+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
391 <190>1 2017-03-15T16:11:27.009436+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#memory_total=8.15MB sample#memory_rss=3.95MB sample#memory_cache=2.66MB sample#memory_swap=0.00MB sample#memory_pgpgin=2603pages sample#memory_pgpgout=1423pages sample#memory_quota=2560.00MB
266 <190>1 2017-03-15T16:11:57.008775+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.00
391 <190>1 2017-03-15T16:11:57.009221+00:00 11844141-29d5-4425-9fd8-894759ae0dc7 heroku web.1 - - source=web.1 dyno=heroku.11844141-29d5-4425-9fd8-894759ae0dc7.91bd5d7c-b12c-47a0-9d67-daef0e4aca96 sample#memory_total=8.15MB sample#memory_rss=3.95MB sample#memory_cache=2.66MB sample#memory_swap=0.00MB sample#memory_pgpgin=2603pages sample#memory_pgpgout=1423pages sample#memory_quota=2560.00MB

各メッセージの先頭は番号とスペースです。数字は、スペースよりも後のメッセージの残り部分の長さを示します。メッセージの残り部分は、RFC5424​ に従って syslog メッセージとしてフォーマットされます。次の要素があります。

  • 山かっこで囲まれた “PRIVAL” の数字。この数字は、syslog ファシリティ番号と syslog 重大度番号の 8 進数合計です。
  • 山かっこの直後のバージョン番号。
  • 実際のログメッセージの内容。Heroku のログ​には複数の種類がありますが、そのいずれかです。

これは、Logplex でログメッセージの受信に使用する​形式と同じです。完全な ABNF 定義を含め、形式についての詳細は、RFC 5424​ を参照してください。

特定の Heroku アプリからのログメッセージを検索する

アプリ、実行時コントロールプレーン、および Heroku ルーターから Private Space Logging を経由してログメッセージが送信される場合、各メッセージの最初の要素は Heroku アプリ UUID になります。たとえば、前出のサンプル内のメッセージは、UUID が 11844141-29d5-4425-9fd8-894759ae0dc7​ であるアプリケーションからのものです。Heroku アプリの UUID は、heroku info​ で --json​ オプションを使用して確認できます。

$ heroku info -a myapp --json
{
  ...,
  "app": {
    ...,
    "id": "1234abcd-352a-4931-1234-1bb5e6f4afa2",
    ...
  }
}

データの所在

Private Space Logging が有効になっているとき、ログデータはソースから直接、設定されたログ記録先に送信されます。Logplex 経由でルーティングされることはありません。これにより、データの所在の制御が向上します。たとえば、Private Space がフランクフルトにあり、ログ記録先もフランクフルトにある場合、ログデータは標準のインターネットルーティングを経由して記録先に直接送信されます。他の Heroku サービス経由でルーティングされることはありません。

一部の Heroku サービスは、Private Space と同じ場所に配置されません。Heroku API や Heroku Build は、グローバルサービスの例です。これらのサービスは、それぞれが配置されている場所から、Space で設定されているログの記録先に直接、ログを送信します。したがって、データの所在は、Space 内に存在するアプリケーションおよびサービスから送信されるログデータにしか適用されません。これらのサービスには実行時コントロールプレーンや HTTP プロキシ、また Heroku Private Postgres、Private Redis、Private Kafka などの Space 内データサービスが含まれます。

ログをキャプチャする

前述した HTTPS ベースのログ記録形式をサポートする任意のログ記録サービスにログを転送できます。これには、クラウドサービスプロバイダー、既存のログプラットフォームのローカルインスタンス、または、ログを格納またはルーティングする方法をプログラムで決定する独自のログキャプチャサービスが含まれます。

ログドレインの記録先は、パブリックに解決およびアドレス指定可能な URL である必要があります。Space 内部の URL や、(たとえば) ピアリングされた VPC 内のプライベート URL は指定できません。Heroku Private Space 本体の外にある (Heroku Data や Heroku API などの) コンポーネントも、ドレインの記録先にログを送信します。また、URL を解決できる必要があります。

Splunk

Splunk Enterprise では、HTTP Event Collector​ と RFC5424 Syslog​ アドオンを使用して Private Space のログを取り込むことができます。

  1. RFC5424 Syslog​ アドオンをインストール​します。

  2. 新しい HTTP Event Collector トークンを作成​します。Splunk のドキュメントに従って、次のようにフィールドに入力します。

    • Name: Space の名前またはその他の一意識別子。イベントを区別するために、Space ごとにトークンを作成することをお勧めします。
    • Source Type: ​rfc5424_syslog
  3. ランダムなチャネル UUID を生成​します。これは、Splunk による raw イベントの収集に必要​です。

  4. 上記の手順で作成したトークンとチャネルを使用して、ログドレイン URL を作成します。

    https://x:TOKEN@yoursplunkhost.example.com:yourport/services/collector/raw?channel=CHANNEL
    

    次に例を示します。

    https://x:1234ABCD-C66E-4B22-854F-5958C7FA637D@yoursplunkhost.domain.com:yourport/services/collector/raw?channel=12341238-adbd-abcd-9dbe-16629695fb1d
    
  5. 前に説明したように、Private Space でログドレイン URL を設定します。

Sumo Logic

Sumo Logic​ にログを送信するように Heroku Shield Private Space を設定するには、次の手順に従います。

  1. ログを生成するアプリを Heroku で作成します。
  2. Heroku CLI​ がインストールされていることを確認します。
  3. Sumo Logic の Hosted Collector​ に HTTP ソース​を設定します。
  4. 作成した HTTP ソースの URL として Heroku ログドレイン​を指定します。

詳細は、こちらの Sumo Logic の記事​を参照してください。

LogDNA

ログを LogDNA に送信するように Heroku Shield Private Space を設定するには、次の手順を実行します。

  1. Heroku CLI​ がインストールされていることを確認します。

  2. www.logdna.com​ にアクセスし、Get Started​ (開始する) ボタンをクリックしてアカウントを作成します。

  3. 登録メール内のリンクをクリックしてメールアドレスを確認し、LogDNA アカウントのパスワードを設定します。

  4. LogDNA Web アプリ​を開き、All Hosts > Add a host​ (すべてのホスト > ホストを追加) をクリックします。

  5. Heroku セクションに移動し、Installing via Heroku Log Drains​ (Heroku ログドレインからインストール) セクションにあるアカウント固有のコマンドを実行します。

これで、アプリケーションのログを LogDNA Web アプリ​で確認できるようになります。

Coralogix

ログを Coralogix に送信するように Heroku Shield Private Space を設定するには、次の手順を実行します。

  1. Coralogix でアカウントを作成​します。

  2. Settings → Send Your Logs​ (設定 → ログの送信) を選択して、新しいアカウントの秘密鍵と会社 ID を取得します。ログに関連付けるアプリケーション名を選択します。

  3. Heroku ログドレインの URL を次のように指定します: ​https://(redacted)@api.coralogix.com/logs/heroku/private?appName=

Coralogix へのログストリームを監視します。詳細は、Coralogix チュートリアル​を参照してください。

カスタムのログキャプチャサービスを実行する

log-iss​ は、オープンソースのログキャプチャサービスの実装です。Go で記述されており、任意の syslog 記録先にログを転送できます。このアプリケーションは、Heroku またはその他の任意のインフラストラクチャで実行できます。ログを ElasticSearch に転送したり、S3 のファイルシステムストアに保存したりするために、コードをフォークしてカスタマイズすることができます。

Private Space Logging の制限

Logplex の機能を使用できない

Private Space Logging が有効なとき、ログメッセージはログの記録先に直接送信され、Logplex​ によっては処理されません。したがって、Private Space Logging が有効なときは、Logplex によって提供される機能は利用できません。これらには以下のものが含まれます。

  • 複数のログドレインにログを転送できません。
  • CLI で heroku logs​ を使用して、またはダッシュボードのログビューアーでログを表示できません。

プライベート接続経由でしかアクセスできないドレインへのログ記録は Private Space Logging でサポートされていない

(Splunk などの) オンプレミスのログ記録システムと、オンプレミスネットワークから Private Space への VPN 接続がある場合、Private Space Logging はプライベート接続経由でオンプレミスのログ記録システムにアクセスできません。 オンプレミスのログ記録システムは、パブリックインターネットに公開されている必要があります。

関連カテゴリー

  • Private Space
Shield Private Space Private Space と Shield Space での Heroku Postgres

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences