站点图标 Linux-技术共享

Docker+Prometheus+Grafana监控VPS运行状态

Prometheus是一个灵活的时间序列数据库和监控系统,有多个监控组件可用。Grafana是用于展示数据的平台。

这几个工具我之前介绍过,不过当时我是用来做VPS的三网监控。实际上Prometheus能做的事情很多,就比如今天要介绍的全方位监控VPS主机运行状态。

prometheus和grafana为简化安装步骤,这里直接使用docker,首先你要安装docker/docker-compose:

apt -y update
apt -y install curl
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

然后新建一个docker-compose.yml:

mkdir -p /opt/monitor && cd /opt/monitor && nano docker-compose.yml

写入下面的配置:

version: '3.5'

volumes:
    prometheus-data:
    grafana-data:

services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        ports:
            - 9090:9090
        volumes:
            - prometheus-data:/prometheus
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
        command:
            - '--config.file=/etc/prometheus/prometheus.yml'
            - '--web.enable-admin-api'
            - '--web.enable-lifecycle'

    grafana:
        image: grafana/grafana
        container_name: grafana
        ports:
            - 3000:3000
        volumes:
            - grafana-data:/var/lib/grafana

接着新建prometheus的配置文件:

nano prometheus.yml

写入如下配置:

global:
    scrape_interval: 5s
    external_labels:
        monitor: 'imlala'

scrape_configs:
    - job_name: 'prometheus'
      static_configs:
          - targets:
                - 'localhost:9090'
            labels:
                instance: prometheus 

    - job_name: 'VPS监控'
      static_configs:
          - targets:
                - '你小鸡的VPS公网IP:9100'
            labels:
                instance: localhost
          - targets:
                - '你的另一只小鸡的公网IP:9100'
            labels:
                instance: ikoula

有多少台VPS就写多少个targets,labels是用于区分。

确认无误后up起来即可:

docker-compose up -d

如果后续你更改了prometheus.yml配置文件内容,可以直接执行下面的命令让prometheus热加载配置,不用重启prometheus容器:

curl -s -XPOST localhost:9090/-/reload

接下来我们需要在每台被监控的小鸡上安装node_exporter,node_exporter是prometheus的数据采集器。

node_exporter设计是用于监控主机系统的,因为它需要访问主机系统,所以官方也不推荐将node_exporter容器化,建议是直接部署在宿主机上。

下载解压移动到usr/bin目录下:

wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
tar -xzvf node_exporter-0.18.1.linux-amd64.tar.gz
cd node_exporter-0.18.1.linux-amd64/
cp node_exporter /usr/bin

新建systemd服务文件:

nano /etc/systemd/system/node_exporter.service

写入如下配置:

[Unit]
Description=Node Exporter

[Service]
User=root
ExecStart=/usr/bin/node_exporter

[Install]
WantedBy=multi-user.target

启动/设置开机自启:

systemctl start node_exporter.service
systemctl enable node_exporter.service

访问你的VPSIP:3000应该能看到grafana的WEBUI,默认的管理员账号密码都是admin。登录进去之后,你需要添加数据源:

lala.im_2020-03-22_20-59-06

如果你之前没有改动过docker-compose.yml内的服务名,那么这里应该填写:

其他的保持默认即可,然后点击Save & Test,测试没问题的话就OK了。

现在你需要新建或者导入模板,自己新建的没有人家现成做的好,这里直接导入别人的模板就行:

一些预览:

预览2:

赞(5)
退出移动版