linux-Grafana+Prometheus监控服务器状态

linux-Grafana+Prometheus监控服务器状态


前篇


Grafana 安装

  1. 下载安装

    官网下载: https://grafana.com/grafana/download

    1
    2
    3
    4
    5
    $ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0.linux-amd64.tar.gz // 下载
    $ tar -zxvf grafana-enterprise-11.2.0.linux-amd64.tar.gz // 解压

    $ mv grafana-v11.2.0 /usr/local/grafana // 习惯移动到系统目录
    $ cd /usr/local/grafana
  2. 创建配置

    用默认配置拷贝出一份自定义配置 myconf.ini

    1
    $ cp conf/defaults.ini conf/myconf.ini
    • 按需修改配置, 默认端口是 3000, 这里将端口修改为 6300

      1
      http_port = 6300
  3. 启动服务

    1
    $ /usr/local/grafana/bin/grafana-server --config=/usr/local/grafana/conf/myconf.ini web
    • 可以将服务注册为系统服务, 开机自启动

      1. 创建 test_grafana.service 文件

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        $ vim /etc/systemd/system/test_grafana.service

        [Unit]
        Description=my grafana service
        After=network.target

        [Service]
        RestartSec=2s
        Restart=always
        #Restart=no

        User=root
        Group=root

        WorkingDirectory=/usr/local/grafana
        ExecStart=/usr/local/grafana/bin/grafana-server --config=/usr/local/grafana/conf/myconf.ini web

        StandardOutput=append:/usr/local/grafana/bin/temp_std_acc.log
        StandardError=append:/usr/local/grafana/bin/temp_std_err.log

        [Install]
        WantedBy=multi-user.target
      2. 重载系统服务

        1
        $ systemctl daemon-reload
      3. 启动服务

        1
        $ systemctl start test_grafana.service
        • 查看状态

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          $ systemctl status test_grafana.service

          ● test_grafana.service - my grafana service
          Loaded: loaded (/etc/systemd/system/test_grafana.service; enabled; vendor preset: enabled)
          Active: active (running) since Mon 2024-09-02 11:50:24 CST; 6min ago
          Main PID: 1286404 (grafana)
          Tasks: 8 (limit: 4476)
          Memory: 44.3M
          CGroup: /system.slice/test_grafana.service
          └─1286404 grafana server --config=/usr/local/grafana/conf/myconf.ini web

          Sep 02 11:50:24 iZwz9j6q3xv2vhn6rsm6m2Z systemd[1]: Started my grafana service.
        • 注册为开机自启动服务

          1
          2
          3
          $ systemctl enable test_grafana.service

          Created symlink /etc/systemd/system/multi-user.target.wants/test_grafana.service → /etc/systemd/system/test_grafana.service.
  4. done. 浏览器打开测试

    image-20240902120302081


Prometheus 安装

Prometheus 本身不支持 安全认证, 但可以通过一下几种方式做安全策略

  1. 内网部署, 外网不可访问
  2. 外网访问情况下, 通过 nginx 反向代理, 在 nginx 中安全校验, 如: header 上带上校验信息
  1. 下载安装

    官网下载: https://grafana.com/grafana/download

    1
    2
    3
    4
    5
    $ wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz // 下载
    $ tar -zxvf prometheus-2.54.1.linux-amd64.tar.gz // 解压

    $ mv prometheus-2.54.1.linux-amd64 /usr/local/prometheus // 习惯移动到系统目录
    $ cd /usr/local/prometheus
  2. 创建配置

    用默认配置拷贝出一份自定义配置 myconf.yml

    1
    cp prometheus.yml myconf.yml
    • 按需修改配置, 后面抓起其他机子状态的就是在这个配置文件里配置
  3. 启动服务

    1
    $ /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/myconf.yml --web.listen-address=":6311"
    • 这里指定服务端口为 6311

    • 可以将服务注册为系统服务, 开机自启动, 参考: [Grafana 安装](#Grafana 安装)

  4. done. 浏览器打开测试

    image-20240902130716190


node_exporter 安装

这个服务是在各个需要检测的机子上安装, 用来被 Prometheus 服务抓取数据
以部署到 192.168.1.45 为例

  1. 下载安装

    官网下载: https://grafana.com/grafana/download

    1
    2
    3
    4
    5
    $ wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz // 下载
    $ tar -xzvf node_exporter-1.8.2.linux-amd64.tar.gz // 解压

    $ mv node_exporter-1.8.2.linux-amd64 /usr/local/prometheus_node_exporter // 习惯移动到系统目录
    $ cd /usr/local/prometheus_node_exporter
  2. 启动服务

    1
    $ /usr/local/prometheus_node_exporter/node_exporter  --web.listen-address=":6321"
    • 这里指定服务端口为 6321

    • 可以将服务注册为系统服务, 开机自启动, 参考: [Grafana 安装](#Grafana 安装)

  3. done. 浏览器打开测试: http://192.168.1.45:6321

    image-20240902142930097


Prometheus 配置 Node

  1. 修改 prometheus 配置文件

    1
    2
    3
    4
    5
    6
    # vim /usr/local/prometheus/myconf.yml

    scrape_configs:
    - job_name: "my_node_01"
    static_configs:
    - targets: ["192.168.1.45:6321"] # 抓取 node 的 服务地址
  2. 重启 prometheus 服务

    1
    $ systemctl restart test_prometheus.service
  3. 打开 prometheus 服务的 targets 就能看到抓取的节点. 点击 Status->Targets

    image-20240902150412418


node_exporter 加入安全校验

通过 nginx 去做安全访问

  1. 修改 node_exporter 服务的端口为一个 外网不可达的端口, 如: 1234

  2. 增加 nginx 配置, 反向代理到 node_exporter 服务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $ vim /etc/nginx/conf.d/http_my.conf

    # prometheus node
    server
    {
    listen 5678 ;
    server_name aaa.bbb.com;
    location / {
    if ($http_Authorization != "Bearer helloworld") { # 校验 token
    return 400 "auth fail!";
    }

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-Proto $scheme;

    client_max_body_size 1m;
    proxy_pass http://localhost:1234; # node_exporter 服务
    }

    access_log /var/log/nginx/aaa.bbb.com.log;
    }
    • 重载 nginx 配置

      1
      $ service nginx force-reload
  3. 修改 prometheus 配置

    1
    2
    3
    4
    5
    6
    7
    # vim /usr/local/prometheus/myconf.yml

    scrape_configs:
    - job_name: "my_node_01"
    static_configs:
    - targets: ["aaa.bbb.com:5678"] # 修改为 nginx 访问地址
    bearer_token: "helloworld" // 校验 token
    • 重启 prometheus 服务

      1
      $ systemctl restart test_prometheus.service

Grafana 配置 Prometheus

添加数据源

  • Data sources 中搜索 Prometheus 模板, 配置 Prometheus 服务信息 (这里已经提前安装好 Prometheus, 参考: [Prometheus 安装](#Prometheus 安装))

    image-20240902151828123


添加可视化面板

  1. 可以手动添加, 不过社区已经有很好用的模板: https://grafana.com/grafana/dashboards

    搜索 node exporter 第一个就就能看到 Node Exporter Full, 然后复制 ID: 1860 (其实链接 https://grafana.com/grafana/dashboards/1860-node-exporter-full/ 里的 1860 就是 ID)

    image-20240902153655569

    然后导入模板 Dashboards -> New -> Import

    image-20240902154240016

    输入模板 ID, 选择数据 Prometheus 源

    image-20240902154557003

  2. 导入后稍作调整即可

    image-20240902154741871

    1. 调整抓取时间的间隔
    2. 保存