一、简介
1.Prometheus与Grafana区别
Prometheus是一个开源的监控系统,主要用于收集、存储和查询时间序列数据。它通过HTTP协议周期性抓取被监控组件的状态,支持通过配置的抓取任务从应用程序和服务中抓取数据,使用一个强大的查询语言PromQL来查询和操作存储的时间序列数据。
Grafana是一个开源的可视化工具,主要用于创建和展示仪表盘和图表。它支持从多种数据源中提取数据并以图形化的方式展示这些数据,包括Prometheus、InfluxDB、Elasticsearch等。
官方地址,官方二进制包下载地址,Prometheus项目的github地址。
2.安装环境准备
宿主机已安装docker和docker-compsoe,Prometheus+Grafana部署在一台宿主机192.168.77.130上
3.架构图
二、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/
三、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
四、被监控服务器安装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
URL中填写Prometheus的访问地址http://192.168.77.130:9090
保存 save & test
导入服务器监控模版