Upgrade to Pro — share decks privately, control downloads, hide ads and more …

いいやつ!systemd

 いいやつ!systemd

Tadashi KAWARAGI

November 25, 2017
Tweet

More Decks by Tadashi KAWARAGI

Other Decks in Technology

Transcript

  1. Please allow me to introduce myself • 河原木忠司(KAWARAGI Tadashi) •

    出身ならびに現住所:北海道 • 講師をやったり、サーバーのお守りを したり • ここ10年ほどは講師専業でやってます • 新人研修から、既存エンジニア向け、 ユーザー向けと幅広く・・・ • 基本はインフラ系。サーバー、セキュリ ティ、仮想化、ネットワークなど、テーマ も幅広く・・・ • たまに執筆も • 「最短突破 LPIC レベル1問題集」(技術評 論社) • 器用貧乏、隙間産業系 • favorite: 音楽、パンダ、嫁
  2. 今さらな話題かもなんですが、 systemdとjournaldの活用方法につい てプレゼンさせていただきます。 今回のプレゼンでは、 systemd = systemd init journald =

    systemd-journald ということでプレゼンさせていただきます。 【デモ環境】 CentOS 7.4(1708) on Oracle VirtualBox
  3. systemctlコマンド • systemdの制御コマンド • 基本構文 • systemctl [OPTIONS...] COMMAND [NAME...]

    COMMAND 意味 start stop restart サービスの起動/停止/再起動 status サービスの状態を表示 enable disable サービスの自動起動の有効/ 無効化 list-unit-files ユニットの一覧表示 isolate 現在のターゲットの変更 get-default set-default 起動時に参照するターゲット の表示/設定 poweroff reboot hibernate シャットダウン/再起動/ハイバ ネート • ユニット • ~.service:サービス(既定) • ~.target:ターゲット • multi-user.target 通常ログイン(CUI) • graphical.target 通常ログイン(GUI) • rescue.target レスキューモード • emergency.target 緊急モード • 一緒に活用すると便利なオプション • --no-pager ページャーを利用せず、標準出力 • --type=service サービスのみ表示
  4. 【デモ操作内容】 systemctl • # systemctl start httpd • # systemctl

    status httpd • # systemctl list-unit-files --type=service --no-pager | grep enabled • # systemctl enable httpd Created symlink from /etc/systemd/system/multi- user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. • # systemctl get-default graphical.target • # systemctl isolate multi-user.target • # systemctl hibernate
  5. journaldの設定 • 設定ファイル:/etc/systemd/journald.conf • まず、この設定を押さえておこう! • Storage=persistent /var/log/journal/ 以下にログを記録 既定では、/run/log/journal/

    以下にログを記録( Storage=auto ) • /var/log/ のボリューム構成に注意! ルートディレクトリと異なる場所にマウントしている場合、local-fs.targetとの依 存関係の調整が必要 # df -h /run ファイルシス サイズ 使用 残り 使用% マウント位置 tmpfs 920M 8.4M 912M 1% /run 既定のままだとシャットダウンすると journallogは消去
  6. journalctlコマンド • journaldの制御コマンド • 基本構文 • journalctl [OPTIONS...] [MATCHES...] OPTIONS

    意味 -n 数値 表示するログの件数 -u ユニット名 表示する対象のユニット -p プライオリティ値 表示するプライオリティ (0:emerg~7:debug) --since=‘日時’ --until=‘日時’ 日時を指定 • ‘yyyy-mm-dd hh:mm:ss’ • today, yesterday • -1min, -1h, -1days -o 形式 出力形式 • verbose: 詳細な出力 -f 末尾を表示し続ける --no-pager ページャーを利用せず、標準出力 • PATH (/usr/sbin/sshdなど) 実行パスによるフィルタ • _PID=xxx PIDによるフィルタ • _UID=xxx UIDによるフィルタ
  7. 【デモ操作内容】 journald / journalctl • # vim /etc/systemd/journald.conf • #

    grep -v '^#' /etc/systemd/journald.conf [Journal] Storage=persistent • # systemctl restart systemd-journald • # ls /var/log/journal/1f051942abc341c39b55a202cd1d0726/ system.journal • # journalctl --since -3min • # journalctl -u sshd --no-pager | grep -i failed • 11月 24 17:50:05 localhost.localdomain sshd[16400]: Failed password for root from 192.168.56.1 port 62122 ssh2 • # journalctl -u sshd --no-pager –o verbose /etc/machine-id