【Raspberry Pi】【AWK】【VBA】Raspberry PiのSyslogを,Excelで解析する仕込みとツール

Linux・CLI・DevOpsカテゴリを表すパンダのイラスト Linux・CLI・DevOps

Raspberry Pi(というよりUnix系)のログを通していろいろな情報を知りたいのだが、まだUnixの扱いに慣れておらず、やれgrepでxxxからyyy抽出し、xxxdが表示されたらうんちゃらといったコンソール上でのログ解析をストレスなくできるレベルではない。

だったら、WindowsのExcelにデータを吸い出してオートフィルタで確認すればいいじゃないかと思い、仕込みを考えて作成したときのメモ。

1. この記事でできること

Raspberry Pi(Syslog)のログファイル(/var/log/auth.logや/var/log/messagesなど)を、AWKスクリプトを用いてCSV形式に変換し、Excelのマクロ(VBA)を使って自動で取り込んでオートフィルタで簡単に絞り込み・解析できるようにします。

2. 想定環境・前提条件

  • Raspberry Pi側: /var/log/auth.log, /var/log/messages が閲覧できる権限(またはsudo等)
  • Windows側: Microsoft Excel(VBAが有効な環境)
  • 文字コード: UTF-8(Raspberry Piのログ出力に合わせて読み込みます)

3. 仕込み①:/var/log のログをCSV変換する(AWK)

まずはRaspberry Pi側でログを整形するためのシェルスクリプト(LogToCSV.sh)を作成します。

#!/bin/bash
# ヘッダー行 ExcelやAccessのヘッダ用
echo "ファイル名,時間,サーバー名,facility,オリジナルメッセージ" > result.csv

# auth.log  ログイン解析
awk '{ print FILENAME","$1" "$2" "$3","$4","$5","$0   " }' /var/log/auth.log  >> result.csv

# 各種ログ
awk '{ print FILENAME","$1" "$2" "$3","$4","$5","$0   " }' /var/log/messages  >> result.csv

ここでは、以下のようなフォーマットのログをインプットとして想定しています。

Dec 7 19:17:23 raspberrypi kernel: [   22.247673] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)

これがカンマ区切りで以下の形式に抽出されます。

当該ファイル名,時間,サーバー名,facility,当該ファイルオリジナルメッセージ

対象は、とりあえず /var/log/messages と /var/log/auth.log としました。

4. 仕込み②:CSV変換後のログファイルをExcelに取り込む(VBA)

Windows側のExcelに以下のVBAコードを記述し、出力したCSVファイルを読み込んでオートフィルタを設定します。

Sub ログ取り込み()
    ' 画面描画と警告を停止して高速化
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' ファイル指定ダイアログを開く
    Dim Filepath As Variant
    Filepath = Application.GetOpenFilename("CSV Files (*.csv), *.csv", , "Syslog CSVファイルを選択してください")
    If Filepath = False Then
        Exit Sub
    End If
    
    ' 既存データのクリア(1行目見出しを残して2行目以降を削除)
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Cells.Clear
    
    ' QueryTablesを使ってCSVをインポート
    With ws.QueryTables.Add(Connection:="TEXT;" & Filepath, Destination:=ws.Range("$A$1"))
        .TextFilePlatform = 65001 ' UTF-8
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .Refresh BackgroundQuery:=False
    End With
    
    ' クエリ定義を解除して通常のセルデータにする
    On Error Resume Next
    ws.QueryTables(1).Delete
    On Error GoTo 0
    
    ' 1行目にオートフィルタを設定
    If ws.UsedRange.Rows.Count >= 1 Then
        ws.Rows(1).AutoFilter
    End If
    
    ' 列幅の自動調整
    ws.Columns.AutoFit
    
    ' 設定を戻す
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    MsgBox "ログの取り込みが完了しました。", vbInformation
End Sub

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月28日

  • 変更途中で途切れていたExcel取り込み用のVBAコードブロックを修正し、完全な処理手順に置き換えました。

2026年9月26日

  • 削除リンク切れとなっている古い外部ZIPファイルへのダウンロードリンクを削除しました。
  • 追加AWKスクリプトとExcel VBAマクロのコードブロックを整形し、目的や前提条件、使い方を明確に追記しました。

文書情報

記事タイトル
【Raspberry Pi】【AWK】【VBA】Raspberry PiのSyslogを,Excelで解析する仕込みとツール
作成日
更新日
Source URL
https://papanda925.com/?p=493

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました