1、做时间同步
timedatectl set-timezone "Asia/Shanghai" #修改时区改为上海
ntpdate "ntp.aliyun.com" #更正时间
2、安装Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz
注意如果拉取不下来可以用以下两种方式试一下
wget http://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz
curl -o -l https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz
以上任意一种方式下载下来即可
3、解压
tar vxf prometheus-2.45.1.linux-amd64.tar.gz
4、移动并改名
mv prometheus-2.45.1.linux-amd64 /opt/prometheus
5、创建prometheus用户并改权限
创建Prometheus用户:
useradd -M -s /uer/sbin/nologin prometheus
修改Prometheus权限:
chown prometheus.prometheus -R /opt/prometheus
6、创建systemd服务
创建systemd服务
cat > /etc/systemd/system/prometheus.service << "EOF"
[Unit]
Description= Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/prometheus \
--config.file=/opt/prometheus/prometheus.yml \
--storage.tsdb.path=/opt/prometheus/data \
--storage.tsdb.retention.time=15d \
--web.enable-lifecycle
[Install]
WantedBy=multi-user.target
EOF
解释:
- [Unit]:定义了服务的基本信息。
- Description:描述了服务的名称和简短说明。
- Documentation:指定了服务的文档链接。
- After:指定了在哪些目标之后启动该服务,这里是network-online.target,表示在网络连接成功后才会启动。
- [Service]:定义了服务的具体配置。
- Type:指定服务的类型,这里是simple,表示它是一个简单的后台进程。
- User和Group:指定服务运行的用户和组。
- Restart:指定当服务发生故障时如何重启。
- ExecStart:指定要运行的命令和参数,这里是启动Prometheus服务器的命令,包括配置文件路径、数据存储路径和其他选项。
- --storage.tsdb.retention.time=15d ;数据存储的天数这里是15天
- [Install]:定义了服务的安装配置。
- WantedBy:指定服务要安装到哪个目标中,这里是multi-user.target,表示它会在多用户模式下启动。
7、启动Prometheus并查看
启动Prometheus:
systemctl start prometheus
查看是否启动成功:
systemctl status prometheus
加入到开机自启:
systemctl enable prometheus
8、访问检测
访问地址:
http://本机ip:9090
监控指标访问:http://本机ip:9090/metrics
3、安装alertmanager
1、下载alert manager
wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
如果报错可以
wget http://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
2、解压
tar xvf alertmanager-0.26.0.linux-amd64.tar.gz
3、移动并改名
mv alertmanager-0.26.0.linux-amd64 /opt/alertmanager
4、修改权限:
chown -R prometheus.prometheus /opt/alertmanager
5、创建systemd服务:
cat >/etc/systemd/system/alertmanager.service << "EOF"
[Unit]
Description=Alert Manager
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/opt/alertmanager/alertmanager \
--config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data
Restart=always
[Install]
WantedBy=multi-user.target
EOF
解释:
[Unit]:
- Description=Alert Manager:描述了该服务的简要说明。
- Wants=network-online.target:指定了该服务依赖于网络连接的可用性。
- After=network-online.target:指定了该服务在网络连接可用后才会启动。
[Service]:
- Type=simple:指定了该服务以简单方式启动,即启动命令不会进入后台或派生子进程。
- User=prometheus:指定了以 prometheus 用户身份运行该服务。
- Group=prometheus:指定了以 prometheus 组身份运行该服务。
- ExecStart=/opt/alertmanager/alertmanager ...:指定了启动命令及其相关参数,用于启动 alertmanager。其中,--config.file 指定了配置文件的路径,--storage.path 指定了数据存储路径。
- Restart=always:指定了在服务故障时自动重启服务。
[Install]:
- WantedBy=multi-user.target:指定了该服务在多用户模式下启动。
6、启动alertmanager
systemctl start alertmanager
加入到开机自启
systemctl enable alertmanager
7、查看是否启动成功:
systemctl status alertmanager
8、访问:http://IP:9093
4、修改Prometheus配置
1、修改配置文件
vim /opt/prometheus/prometheus.yml
# - alertmanager:9093 修改为: - localhost:9093
增加一行告警文件
- "alert.yml"
2、增加触发器配置文件
cat >/opt/prometheus/alert.yml <<"EOF"
groups:
- name: Prometheus alert
rules:
# 对任何实例超过30s无法联系的情况发出警报
- alert: 服务告警
expr: up == 0
for: 30s
labels:
severity: critical
annotations:
instance: "{{ $labels.instance }}"
description: "{{ $labels.job }} 服务已关闭"
EOF
解释:
- groups:表示警报规则组,可以包含多个规则。
- name: Prometheus alert:规则组的名称,这里是 "Prometheus alert"。
- rules:包含具体的警报规则。
- - alert: 服务告警:表示一个警报规则的开始。这里定义了一个名为 "服务告警" 的警报规则。
- expr: up == 0:表示警报规则的条件表达式。这个表达式检查指标 up 是否等于 0,即实例是否无法联系。
- for: 30s:指定警报规则在满足条件后持续的时间,这里是 30 秒。
- labels:定义警报规则的标签。这里设置了 severity 标签为 critical,表示严重程度为关键。
3、检查配置
cd /opt/prometheus/
./promtool check config prometheus.yml
重新加载Prometheus:
curl -X POST http://localhost:9090/-/reload
5、安装grafana
1、下载Grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.5.8.linux-amd64.tar.gz
2、解压
tar -zxvf grafana-enterprise-9.5.8.linux-amd64.tar.gz
3、移动并改名
mv grafana-9.5.8 /opt/grafana
4、授权:
chown -R prometheus.prometheus /opt/grafana/
5、创建systemd服务
cat >/etc/systemd/system/grafana-server.service<<"EOF"
[Unit]
Description=Grafana server
Documentation=http://docs.grafana.org
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/grafana/bin/grafana-server \
--config=/opt/grafana/conf/defaults.ini \
--homepath=/opt/grafana
[Install]
WantedBy=multi-user.target
EOF
详解:
[Unit]
- Description:描述了服务的名称,即 "Grafana server"。
- Documentation:提供了关于该服务的文档的链接地址。
[Service]
- Type:指定了服务的类型为 "simple",表示该服务是一个独立运行的简单进程。
- User:设置执行服务的用户为 "prometheus"。
- Group:设置执行服务的用户组为 "prometheus"。
- Restart:当服务发生故障时,自动重新启动服务。
- ExecStart:指定启动服务时要运行的命令,即 "/opt/grafana/bin/grafana-server --config=/opt/grafana/conf/defaults.ini --homepath=/opt/grafana"。这里使用了 Grafana 服务器的二进制文件和相关配置。
[Install]
- WantedBy:指定了服务应该由哪个系统目标(target)来启动,这里是 "multi-user.target",表示在多用户模式下启动。
6、启动grafanan:
systemctl start grafana-server
7、查看是否启动成功:
systemctl status grafana-server
8、访问grafana的web页面
访问地址是本机IP加3000端口
默认账号和密码都是:admin
6、安装node_exporter
1、下载node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
2、解压:
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
3、移动并改名:
mv node_exporter-1.7.0.linux-amd64 /opt/node_exporter
4、授权:
chown -R prometheus.prometheus /opt/node_exporter/
5、创建systemd服务
cat >/etc/systemd/system/node_exporter.service <<"EOF"
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
解释:
[Unit] 部分表示该服务单元的描述信息:
- Description:描述该服务单元的名称。
- Documentation:提供有关服务的相关文档链接。
- After:表示在哪些其他服务单元后启动本服务单元。在本例中,服务需要在网络服务后启动。
[Service] 部分用于定义服务的具体信息:
- User 和 Group:用于指定服务运行的用户和组。
- ExecStart:指定服务启动的命令,这里是 /opt/node_exporter/node_exporter。
- Restart:表示服务遇到错误时自动重启,在本例中是 on-failure。
[Install] 部分表示服务的安装信息:
- WantedBy:指定服务所属的 multi-user.target(即多用户模式),表示该服务会在多用户模式下自动启动。
6、启动:
systemctl start node_exporter
7、加入到开机自启
systemctl enable node_exporter
8、查看是否启动成功:
systemctl status node_exporter
7、修改Prometheus配置
1、在配置文件添加node配置
vim /opt/prometheus/prometheus.yml
# 在scrape_configs这行下面添加如下配置:
# #node_exporter配置
- job_name: 'node-exporter'
scrape_interval: 15s
static_configs:
- targets: [ 'localhost:9100' ]
labels:
instance: Prometheus服务器
2、重新加载Prometheus配置
curl -X POST http://localhost:9090/-/reload
3、打开Prometheus的web上检查
本机IP加9090端口
http://192.168.1.140:9090
以上Prometheus加grafana已安装完成
8、Grafana web操作
打开下面这个页面选择仪表盘
回到grafana的web页面
以上完成所有操作