在Prometheus中监视Docker容器中的node_exporter
环境
Prometheus正在Docker容器上运行。
Docker主机:CentOS 7.3
Docker容器:(Prometheus服务器)CentOS 7.3
<Docker监视对象(node_exporter)>
Docker主机:CentOS7.3
Docker容器:CentOS7.3(假设运行Apache的Web服务器)
前置条件
我们假设在root权限下进行操作。
在Docker主机上的命令使用#表示,在容器上的命令使用##表示。
Prometheus已在Docker容器中安装完毕,并且在浏览器中通过localhost:9090可以看到本机的图表。这是在环境配置完成后的状态。
尝试在CentOS 7.3和Docker上安装Prometheus。
在中文中,一种选项是:虽然有下载源代码并编译的方法,但是因为需要依赖环境而无法编译,所以还是直接下载软件包比较方便。
安装node_exporter
请确认放置在受监控服务器上的node_exporter是否为最新版本。
您可以通过以下链接获取最新版本:https://prometheus.io/download/
在这个环境下,我们选择以下内容:
操作系统:Linux
架构:amd64
★ 有许多不同的exporter可用,让人想要尝试一下。
请搜索 node_export,然后复制链接地址。
首先,在Prometheus服务器本身上进行安装。
请在要监视的Docker容器上执行相同的步骤。
<Prometheusコンテナ>
## cd /usr/local/src
## wget <リンクアドレスのコピー>
例)
## wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0-rc.1/node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
## tar zxfv node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
## mv node_exporter-0.14.0-rc.1.linux-amd64 node_exporter
## cd node_exporter
## ./node_exporter &
[1] 151
[root@b1fa06bf6961 node_exporter]# INFO[0000] Starting node_exporter (version=0.14.0-rc.1, branch=master, revision=5a07f4173d97fa0dd307db5bd3c2e6da26a4b16e) source="node_exporter.go:136"
INFO[0000] Build context (go=go1.7.4, user=root@ed143c8f2fcd, date=20170116-16:00:03) source="node_exporter.go:137"
INFO[0000] No directory specified, see --collector.textfile.directory source="textfile.go:57"
INFO[0000] Enabled collectors: source="node_exporter.go:156"
INFO[0000] - entropy source="node_exporter.go:158"
INFO[0000] - netdev source="node_exporter.go:158"
INFO[0000] - stat source="node_exporter.go:158"
INFO[0000] - textfile source="node_exporter.go:158"
INFO[0000] - edac source="node_exporter.go:158"
INFO[0000] - filesystem source="node_exporter.go:158"
INFO[0000] - loadavg source="node_exporter.go:158"
INFO[0000] - netstat source="node_exporter.go:158"
INFO[0000] - sockstat source="node_exporter.go:158"
INFO[0000] - uname source="node_exporter.go:158"
INFO[0000] - zfs source="node_exporter.go:158"
INFO[0000] - conntrack source="node_exporter.go:158"
INFO[0000] - mdadm source="node_exporter.go:158"
INFO[0000] - meminfo source="node_exporter.go:158"
INFO[0000] - vmstat source="node_exporter.go:158"
INFO[0000] - diskstats source="node_exporter.go:158"
INFO[0000] - filefd source="node_exporter.go:158"
INFO[0000] - hwmon source="node_exporter.go:158"
INFO[0000] - time source="node_exporter.go:158"
INFO[0000] Listening on :9100 source="node_exporter.go:176"
我刚刚按了一堆按钮。
我害怕地按下了返回键,然后正常地回到了提示界面。
请在要监视相同步骤的服务器上执行该操作。
3.自动启动设置
如果保持现状,每次重新启动监视目标服务器都需要执行./node_exporter命令。
让我们进行自动启动的设置吧。
<Prometheusコンテナ>
## vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
[Service]
Type=simple
ExecStart=/usr/local/src/node_exporter/node_exporter
PrivateTmp=false
[Install]
WantedBy=multi-user.target
## systemctl enable node_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
<Dockerホスト上>
# iptables -A INPUT -p tcp -m tcp --dport 59100 -j ACCEPT
★ なんと!port 9100/tcp がjetdirect、port 9100/udp hp-pdl-datastr と被ってました。
そのためprometheus で利用する port を変更(被らない場合は、以降59100を9100に置き換えてください)
★ docker run する際に-p 59100:9100 を忘れずに実行してください。
请在同一台服务器上执行相同的步骤。
PrometheusServer的配置设置
4.编辑prometheus.yml文件(在末尾添加)
<Prometheusコンテナ>
## vi /etc/prometheus/prometheus.yml
- job_name: 'node_exporter'
- targets: ['localhost:9100', '****.com:59100']
labels:
group: 'node_exporter'
## systemctl restart prometheus.service
后记
这次是关于在容器中使用node_exporter,但在另一篇文章中我们会介绍在Docker主机中使用node_exporter版本。
考虑到容器的扩展性,将node_exporter放置在Docker主机上会更好。
请引用
长生村本郷工程师博客