LoginSignup
0
0

More than 1 year has passed since last update.

Node-REDのログをCloud Loggingにキレイに出力したい

Posted at

はじめに

こんにちは。
これは、2021年 NI+C Advent Calendar 12日目の記事です。
毎年のごとく、(Google Cloudのはずだけど)私はNode-RED絡めて書きます。

Node-RED Flowのログを出力する

Node-REDのフローからログを出力する際は、出力したいフローの箇所にDebug Nodeをつなげて出力します。GAE等でもこれは変わらずDebug Nodeの設定で「システムコンソール」にチェックを入れればCloud Loggingにちゃんと出力されるのですが、、、重要度指定なし、出力対象のオブジェクトは全てStringとして出力されてしまい、せっかくのCloud Loggingの便利さが活かせない残念な結果になってしまいます。お仕事で使うのであれば、こういったところも「運用しやすさ」を意識してやりたいですよね?でも、どうやればいいのでしょうか、、、?

Cloud Loggingにログをキレイに出力したい(前準備)

Google Cloud用にカスタムしたスターターを使いましょう。これを使うと、Cloud Loggingに合わせた出力が可能になります。もし、スターターコードは使わず進めたい場合は、以下を自分の環境に移植してください。

// settings.js
// 8行目
const logger = require('./utils/logger');
// 9行目
const logHelper = require('./utils/logHelper');
// 74-78行目
      handler: function () {
        return function (msg) {
          logHelper.log(msg);
        };
      },

Cloud Loggingにログをキレイに出力したい(フロー実装)

以下図のようにワイヤリングしてください。
スクリーンショット 2021-12-12 21.09.29.png
Function Nodeは以下のように記入ください
LOG_MSG(Function Node)

let logMsg = "ログタイトル(一言メッセージ)";

let logObj = {
    "LOG_SEVERITY": "info", // Cloud Loggingの重要度
    "LOG_MESSAGE": logMsg,
    "payload": msg.payload // ログの詳細
};

msg.log = JSON.stringify(logObj); // Cloud Logging出力用 ※1
msg.payload = logObj; // Node-REDデバッグタブ出力用

return msg;

※1: Version2.0.6以降(だったかしら、、)のNode-REDからDebug出力になにか手が入ったっぽく、Debug Nodeでシステムコンソール出力する前にJSONをStringに変換しないと、フォーマットが崩れて出力されてしまいます。。ですので、msg.log = JSON.stringify(logObj)は今は必ず行いましょう。(いつか、問題箇所見つけて修正します。。)

Cloud Loggingでログを確認

LOG NAMEは winston_log として出力されますので、winston_logで絞り込んでください。
LOG_MSG(Function Node)のコードとの対応は以下図のようになってますので、目的のログが出力されたか確認ください。
スクリーンショット 2021-12-12 21.57.45.png

まとめ

いかがでしたか??
Cloud LoggingはGCP上の様々なログを統合し確認できる、フィルタリング操作にも優れたツールで、Cloud Monitoringと組み合わせてログ条件でのalert設定も可能です。運用面で非常に役に立つこの機能にNode-REDも少しの工夫で対応できますのでぜひご活用ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0