gpt4 book ai didi

bash - 如何从Nagios设置对Docker容器的监视

转载 作者:行者123 更新时间:2023-12-02 19:13:00 29 4
gpt4 key购买 nike

我正在尝试从nagios设置对Docker容器的监控。我的nagios在一个VM上,而docker在另一个VM上。因此,要监视docker我正在尝试使用the shell script below:

#!/bin/bash

# Author: Erik Kristensen
# Email: erik@erikkristensen.com
# License: MIT
# Nagios Usage: check_nrpe!check_docker_container!_container_id_
# Usage: ./check_docker_container.sh _container_id_
#
# The script checks if a container is running.
# OK - running
# WARNING - container is ghosted
# CRITICAL - container is stopped
# UNKNOWN - does not exist

CONTAINER=$1

RUNNING=$(docker inspect --format="{{ .State.Running }}" $CONTAINER 2> /dev/null)

if [ $? -eq 1 ]; then
echo "UNKNOWN - $CONTAINER does not exist."
exit 3
fi

if [ "$RUNNING" == "false" ]; then
echo "CRITICAL - $CONTAINER is not running."
exit 2
fi

GHOST=$(docker inspect --format="{{ .State.Ghost }}" $CONTAINER)

if [ "$GHOST" == "true" ]; then
echo "WARNING - $CONTAINER has been ghosted."
exit 1
fi

STARTED=$(docker inspect --format="{{ .State.StartedAt }}" $CONTAINER)
NETWORK=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" $CONTAINER)

echo "OK - $CONTAINER is running. IP: $NETWORK, StartedAt: $STARTED"

并将文件放在/ usr / lib64 / nagios / plugins /
但是在运行此脚本时,它往往会引发错误。

错误:

check_docker: line 40: syntax error: unexpected end of file



作为一个Java家伙,我真的不了解很多

所以有人可以告诉我如何完成监视docker的任务,因为我已经在此浪费时间了

预先感谢您的帮助。

最佳答案

问题是复制/粘贴中出现意外的eol字符。

这实际上是一个Bash问题,或更具体的说,这是一个特殊的字符,您可能看不到它的末尾,因为您可能是从网站复制/粘贴的。

问题的原因:

许多网站都提到eol问题,但look here则简短而切合实际。

DOS uses carriage return and line feed ("\r\n") as a line ending, which Unix uses just line feed ("\n"). You need to be careful about transferring files between Windows machines and Unix machines to make sure the line endings are translated properly.



解决方案:

要修复UNIX风格eol的行尾,请运行 dos2unix file.sh,但您可能需要先安装该实用程序。在Ubuntu中,它将是 sudo apt-get install dos2unix。根据环境,对您来说可能是相同的。

替代方法:

如果您想确切地了解结尾处的内容,可以在 Windows 上查看Notepad ++,因为它可以理解各种格式的eol字符。您需要启用菜单中的所有字符。

Linux上上, Emacs Whitespace mode将显示相同的内容:

使用 M-x whitespace-mode RET在本地切换,或查看(许多)详细信息和示例的链接。

关于bash - 如何从Nagios设置对Docker容器的监视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31342815/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com