SSL証明書・Go言語開発・Linuxサーバー構築・セキュリティ
執筆:株式会社エスロジカル(Webシステム受託開発・インフラ構築・運用改善)
「ログを見ればわかる」と言えるシステムは、設計段階からログの目的・内容・保存場所を決めています。
「ログが何もない」「ある時刻に何が起きたかわからない」という状態は、
トラブル調査を困難にし、障害の再発防止を妨げます。
本記事では、Webシステムのログ設計の考え方と、よくあるトラブルの調査アプローチを整理します。
ログを設計する際に「何を」「どこに」「どれだけ」の 3 点を明確にします。
| 問い | 考え方 | 実務上のポイント |
|---|---|---|
| 何を記録するか | トラブル調査・セキュリティ監査・ビジネス分析に必要な情報 | 個人情報・パスワードはログに書かない |
| どこに書くか | ファイル・syslog・外部ログ集約サービス | ディスクがいっぱいになるとサービス停止する |
| どれだけ残すか | 保持期間・ローテーション設定 | 法的要件(個人情報保護法等)で保持期間が定まる場合がある |
アクセスログはトラブル調査・セキュリティ監査・アクセス分析の基礎です。 デフォルトのフォーマットでも十分な場合がありますが、以下の要素を含めると後の調査が楽になります。
$request_time)・ User-Agent・Referer個人情報の取り扱い注意:URL パラメータにユーザー ID・メールアドレスが含まれる場合、 アクセスログに個人情報が記録されます。ログの保管・アクセス権限を適切に管理してください。
/var/log/nginx/error.log に 502 Bad Gateway・upstream エラーなどが記録されます。バックエンドアプリの問題調査の起点になります。error_log 設定でファイルに出力。本番では display_errors = Off・log_errors = On が必須です。journalctl -u nginx -f でサービスのリアルタイムログを確認できます。サーバーが複数台ある場合や Docker 環境では、ログを中央に集約すると調査が効率的になります。
SSL 関連のエラーは種類が多く、エラーメッセージから原因を特定することが重要です。
| エラー | 主な原因と対処法 |
|---|---|
| ERR_CERT_DATE_INVALID | 証明書の有効期限切れ。証明書を更新する |
| ERR_CERT_AUTHORITY_INVALID | 中間証明書が未設定。証明書チェーンを正しく設定する |
| ERR_SSL_VERSION_OR_CIPHER_MISMATCH | クライアントとサーバーの TLS バージョン/暗号スイートが不一致。TLS 1.2 以上を設定する |
| ERR_CERT_COMMON_NAME_INVALID | 証明書のドメインが一致しない。正しいドメイン用の証明書を使用する |
| 502 Bad Gateway(Nginx) | バックエンドへの接続失敗。バックエンドのプロセス死活・ポート番号・タイムアウト設定を確認する |
証明書の現在の状態は SSL証明書インストールチェッカー で確認できます。
SSL証明書 FAQ /
SSL証明書の購入はこちら
systemctl status appname)→ ③ バックエンドのアプリログでエラーを確認 → ④ DB 接続・メモリ不足を確認(5xx の意味分けは HTTPステータスコード実務ガイド)$request_time で遅いリクエストを特定 → ② アプリログでその時刻の処理を確認 → ③ DB のスロークエリログを確認df -h でディスク使用量確認 → ② du -sh /var/log/* でログサイズ確認 → ③ 大きなログをローテーション・削除 → ④ logrotate 設定を見直すログを放置するとディスクが枯渇します。logrotate を使ったローテーション設定を必ず行います。
/etc/logrotate.d/ にアプリ用の設定ファイルを作成するpostrotate で nginx -s reopen を実行し、新しいファイルに書き込むよう指示する