在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主机上会更好。

请引用

长生村本郷工程师博客

广告
将在 10 秒后关闭
bannerAds