一、简介

1.Prometheus与Grafana区别

Prometheus是一个开源的监控系统,主要用于收集、存储和查询时间序列数据。它通过HTTP协议周期性抓取被监控组件的状态,支持通过配置的抓取任务从应用程序和服务中抓取数据,使用一个强大的查询语言PromQL来查询和操作存储的时间序列数据。

Grafana是一个开源的可视化工具,主要用于创建和展示仪表盘和图表。它支持从多种数据源中提取数据并以图形化的方式展示这些数据,包括Prometheus、InfluxDB、Elasticsearch等。

官方地址,官方二进制包下载地址,Prometheus项目的github地址

2.安装环境准备

宿主机已安装docker和docker-compsoe,Prometheus+Grafana部署在一台宿主机192.168.77.130上

3.架构图

Prometheus+Grafana监控服务器_grafana

二、Prometheus安装方式

0.二进制部署

#创建Prometheus安装目录
mkdir -p /app/prometheus
cd /app/prometheus
#下载Prometheus的二进制文件
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
#解压并创建软链接
tar xf prometheus-2.30.3.linux-amd64.tar.gz
ln -s prometheus-2.30.3.linux-amd64 prometheus
#systemd管理prometheus  Type=notify会hang住,改为simple即可
cat >/usr/lib/systemd/system/prometheus.service<<'EOF'
[Unit]
Description=prometheus server
After=network.target
[Service]
Type=simple
ExecStart=/app/prometheus/prometheus/prometheus --config.file=/app/prometheus/prometheus/prometheus.yml --web.enable-lifecycle
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
#重新加载systemd并启动prometheus
systemctl daemon-reload
systemctl restart prometheus
#默认监听端口9090
ss -tlunp | grep 9090

1.docker方式安装

#创建目录/opt/prometheus
mkdir -p /opt/prometheus
cd /opt/prometheus
#编写docker-compose.yml
cat >docker-compose.yml<<'EOF'
version: '3'
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - /data/prometheus:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
      - --storage.tsdb.path=/prometheus
    restart: unless-stopped
EOF
#编写prometheus.yml 
#配置定义了Prometheus的抓取间隔,并为本地运行的Prometheus服务添加了一个监控作业。
#根据需要,你可以添加更多的作业以监控其他服务或主机。
cat >prometheus.yml<<'EOF'
global:
  scrape_interval: 15s
  evaluation_interval: 15s
 
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF
#创建持久化数据目录并赋予权限
mkdir -p /data/prometheus
chmod 777 /data/prometheus
#启动prometheus容器
docker-compose up -d

报错 权限问题

msg="Error opening query log file" file=/prometheus/queries.active err="open /prometheus/queries.active: permission denied" panic: Unable to create mmap-ed active query log

解决 

chmod 777 /data/prometheus

2.浏览器访问测试

http://192.168.77.130:9090/

Prometheus+Grafana监控服务器_node_exporter_02

三、grafana安装

1.安装

#创建目录
mkdir -p /opt/grafana
cd  /opt/grafana
#docker-compose.yml文件
cat > docker-compose.yml <<EOF
version: '3.9'
services:
  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - TZ=Asia/Shanghai
    networks:
      - grafana
    volumes:
      - ./grafana:/var/lib/docker/volumes/grafana
networks:
    grafana:
      driver: bridge
EOF
#启动
docker-compose up -d

2.浏览器访问测试

http://192.168.77.130:3000 默认账号和口令  admin/admin

Prometheus+Grafana监控服务器_node_exporter_03

四、被监控服务器安装Node-Exporter

1.安装Node Exporter

#Node Exporter是一个用于采集服务器性能数据的开源工具,可以用于监控和告警。
#创建安装目录
mkdir /app/node_exporter
cd /app/node_exporter
#下载安装包
wget https://mirror.ghproxy.com/https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
#解压并创建软链接
tar xf node_exporter-1.8.2.linux-amd64.tar.gz
ln -s node_exporter-1.8.2.linux-amd64 node_exporter
#systemd管理node_exporter
cat >/usr/lib/systemd/system/node_exporter.service<<'EOF'
[Unit]
Description=Node Exporter
After=network.target
 
[Service]
User=nobody
Type=simple
ExecStart=/app/node_exporter/node_exporter/node_exporter
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target
EOF
#重新加载systemd并启动node_exporter
systemctl daemon-reload
systemctl restart node_exporter
#默认监听端口9100
ss -tlunp | grep 9100

2.Prometheus服务添加监控作业

#修改prometheus.yml配置文件
cat >prometheus.yml<<'EOF'
global:
  scrape_interval: 15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
      - targets: ["192.168.77.130:9100"]
EOF

五、grafana添加Prometheus插件

Configuration---Plugins---搜索prome---点击prome图标---Create a Prometheus data source

Prometheus+Grafana监控服务器_grafana_04

Prometheus+Grafana监控服务器_grafana_05

URL中填写Prometheus的访问地址http://192.168.77.130:9090

Prometheus+Grafana监控服务器_node_exporter_06

保存  save & test

Prometheus+Grafana监控服务器_Prometheus_07

导入服务器监控模版

Prometheus+Grafana监控服务器_Prometheus_08

Prometheus+Grafana监控服务器_Prometheus_09

Prometheus+Grafana监控服务器_Prometheus_10