AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1058259
Accepted
ZoFreX
ZoFreX
Asked: 2021-03-26 02:39:42 +0800 CST2021-03-26 02:39:42 +0800 CST 2021-03-26 02:39:42 +0800 CST

journalctl 在 DigitalOcean droplet 上启动后随机停止工作

  • 772

我正在使用我在 DigitalOcean 上使用 Packer 制作的自定义图像构建服务器,并且我遇到了一个反复出现的问题,即 journalctl 没有任何日志:

# journalctl
No journal files were found.

有时我对我构建的图像有这个问题,有时我没有。有时,由同一映像构建的一台服务器可以工作,而另一台则不能。

我还注意到,如果我非常快速地登录到服务器,有时 journalctl 最初可以工作,但很快就会中断(<1 分钟后)。

如果我重新启动 journald,那么从那时起它会正常工作,但我会丢失在那之前的所有日志。

digital-ocean packer journalctl
  • 1 1 个回答
  • 216 Views

1 个回答

  • Voted
  1. Best Answer
    ZoFreX
    2021-03-26T02:39:42+08:002021-03-26T02:39:42+08:00

    这不是随机的。“随机性”基于构建映像和启动服务器之间是否经过了 10 分钟——这就是为什么有时同一个映像会给出不同结果的原因。

    问题是你没有清除镜像中的机器id。

    如果基础映像中有一个,DigitalOcean 通过 cloud-init 注入一个首次启动脚本来生成一个新的机器 ID。这个脚本用来判断机器 id 是否被烘焙到图像中的启发式方法是检查 mtime on/etc/machine-id是否超过 10 分钟前。

    /var/lib/cloud/scripts/per-instance/machine_id.sh:

    # record timestamp on machine-id for testing
    # If /etc/machine_id is over 10m old on first-boot, delete it
    if [ -f /etc/machine-id ]; then
        if [ $DIFF -lt 600 ]; then
            exit 0
        fi
    rm -rf /etc/machine-id
    fi
    

    systemd 日志将日志文件存储在磁盘上以机器 ID 命名的目录中,因此更改机器 ID 会使其失去对这些日志的跟踪。

    journalctl您可以通过告诉从旧目录加载日志来查看机器 ID 更改之前的日志,例如:

    journalctl -D /var/log/journal/4ff0f6fdda274a6b9d2b9287b8a15c81
    

    此处的修复是清除烘焙图像中的机器 ID。您可以通过删除/var/lib/dbus/machine-idand来执行此操作/etc/machine-id,或者您可以使用packer-virt-sysprep中的 machine-id 脚本,这是一个有用的脚本库,用于将 VM 准备为映像。

    • 2

相关问题

  • 如何使用带有 Kubernetes 的 Digital Ocean 正确配置负载均衡器?

  • DigitalOcean Droplet 和带有负载均衡器的托管数据库 - DDOS 保护

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve