组件介绍:
1、Prometheus是由go语言开发的一套开源的系统监控报警框架。
2、Alertmanager是接收Prometheus发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组,策略路由,是一款专业的告警通知系统。
3、Grafana是一个开源的图表可视化工具,图表配置方便,生成的图表很漂亮,并能实现告警,支持五十多种数据源,Prometheus就是其中支持的一种。
4、可以理解为Prometheus是收集数据,Alertmanager是数据告警系统,Grafana是把Prometheus收集来的数据整理并通过图表的方式展示出来。
5、Prometheus也有自己的图表展示模块,但相比Grafana比较简陋,所以一般使用Grafana作为Web UI展示数据。
6、Grafana也有告警功能,但是比较简单,所以一般使用Alertmanager专业告警系统。
操作系统:AnolisOS-8.x
服务端IP:10.189.189.171
客户端IP:10.189.189.189、10.189.189.188、10.189.189.187
准备篇:
1、关闭selinux
setenforce 0 #临时关闭
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config #永久关闭
/usr/sbin/sestatus -v #shutdown -r now 重启服务器后查看selinux状态,disabled表示关闭
2、设置防火墙,放行相关端口
#内网集群环境下,如果有硬件防火墙,也可以直接关闭系统防火墙。
Prometheus服务端:tcp 9090
Prometheus客户端:tcp 9100
Alertmanager:tcp 9093
Grafana:tcp 3000
#AnolisOS-8.x默认是firewall防火墙,可以改为iptables防火墙
2.1关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
systemctl mask firewalld
systemctl stop firewalld
yum remove firewalld
2.2安装iptables防火墙
yum install iptables-services #安装
vi /etc/sysconfig/iptables #编辑防火墙配置文件
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9093 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
/usr/libexec/iptables/iptables.init restart #重启防火墙
3、设置时区和时间(所有服务器要一致)
rm -rf /etc/localtime #先删除默认的时区设置
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换上海/北京作为默认
vi /etc/sysconfig/clock #添加时区
Zone=Asia/Shanghai
:wq! #保存退出
timedatectl set-local-rtc 0
hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数
date #显示系统时间
date -s "2025-06-05 14:15:00" #修改时间
yum install chrony #安装时间同步工具
systemctl start chronyd #启动
systemctl restart chronyd #重启
systemctl status chronyd #查看状态
systemctl enable chronyd #开机自启动
vi /etc/chrony.conf #设置时间服务器
pool ntp.aliyun.com iburst #添加时间服务器
:wq! #保存退出
systemctl restart chronyd
chronyc makestep #立即校正时间
chronyc sources -v #查看同步状态
chronyc tracking #查看主同步详情
chronyc sourcestats #统计各源稳定性
chronyc tracking | grep "Last offset" #验证时间同步精度(包括毫秒级偏移)
安装篇:
1、安装Prometheus服务端
1.1下载Prometheus服务端安装包
Prometheus官方网站:https://prometheus.io/download/
下载二进制版的安装包
目前最新LTS版本:
https://github.com/prometheus/prometheus/releases/download/v2.53.4/prometheus-2.53.4.linux-amd64.tar.gz
上传prometheus-2.53.4.linux-amd64.tar.gz到/usr/local/src目录
1.2安装Prometheus服务端
#解压安装包到安装目录
cd /usr/local/src
tar zxvf prometheus-2.53.4.linux-amd64.tar.gz -C /usr/local
#修改名称
mv /usr/local/prometheus-2.53.4.linux-amd64 /usr/local/prometheus
#创建Prometheus组和用户
groupadd -r prometheus #添加用户组
useradd -r -g prometheus -s /sbin/nologin -M -c "prometheus Daemons" prometheus
#创建prometheus数据存放目录
mkdir -p /usr/local/prometheus/data
#设置目录权限
chown -R prometheus.prometheus /usr/local/prometheus
chown -R prometheus.prometheus /usr/local/prometheus/data
#查看端口是否被占用,Prometheus服务端默认端口:tcp 9090
lsof -i :9090
#查看端口 vi /usr/local/prometheus/prometheus.yml static_configs: - targets: ["localhost:9090"] :wq! #保存退出
#直接使用默认配置文件启动
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" --web.listen-address=:9090 &
#查看端口有9090表示服务启动成功
netstat -tnpl | grep prometheus
ss -tnpl | grep prometheus
#查看进程
ps -ef | grep prometheus
#关闭进程
pkill prometheus
#添加prometheus为系统服务
vi /usr/lib/systemd/system/prometheus.service #注意要去掉多余的空格和行,否则启动会报错
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
Environment="GOMAXPROCS=4"
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data \
--storage.tsdb.retention=30d \
--web.console.libraries=/usr/local/prometheus/console_libraries \
--web.console.templates=/usr/local/prometheus/consoles \
--web.listen-address=0.0.0.0:9090 \
--web.read-timeout=5m \
--web.max-connections=10 \
--query.max-concurrency=20 \
--query.timeout=2m \
--web.enable-lifecycle
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
NoNewPrivileges=true
LimitNOFILE=infinity
ReadWriteDirectories=/usr/local/prometheus/data
ProtectSystem=full
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.target
:wq! #保存退出
systemctl daemon-reload #重新加载配置
systemctl start prometheus #启动prometheus
systemctl status prometheus #查看prometheus状态
systemctl stop prometheus #停止prometheus
systemctl restart prometheus #重启prometheus
systemctl enable prometheus #设置开机启动
#查看端口有9090表示服务启动成功
netstat -tnpl | grep prometheus
#浏览器打开http://10.189.189.171:9090/
#可以看到如下界面
Status-Targets-就可以看到监控的本机
#浏览器打开http://10.189.189.171:9090/metrics
可以查看到监控本机数据展示
2、安装Prometheus客户端
2.1 在被监控的主机上安装node_exporter客户端组件
#下载二进制版的客户端组件
目前最新版本下载:
https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz
上传node_exporter-1.9.1.linux-amd64.tar.gz到/usr/local/src目录
#解压安装包到安装目录
cd /usr/local/src
tar zxvf node_exporter-1.9.1.linux-amd64.tar.gz -C /usr/local
#修改名称
cd /usr/local
mv node_exporter-1.9.1.linux-amd64 node_exporter
#创建Prometheus组和用户
groupadd -r prometheus #添加用户组
useradd -r -g prometheus -s /sbin/nologin -M -c "prometheus Daemons" prometheus
#设置目录权限
chown -R prometheus.prometheus /usr/local/node_exporter
#查看端口是否被占用,Prometheus客户端默认端口:tcp 9100
lsof -i :9100
#使用默认文件启动node_exporter
/usr/local/node_exporter/node_exporter --web.listen-address=:9100 &
#确认是否正常启动(默认端口9100,可以自定义修改端口)
ss -tnpl |grep node_exporter
LISTEN 0 128 *:49100 *:* users:(("node_exporter",pid=411116,fd=3))
#查看进程
ps -ef | grep node_exporter
#关闭进程
pkill node_exporter
#添加prometheus为系统服务
vi /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/usr/local/node_exporter/node_exporter \
--web.listen-address=0.0.0.0:9100 \
--web.telemetry-path=/metrics \
--log.level=info \
--log.format=logfmt
Restart=always
[Install]
WantedBy=multi-user.target
:wq! #保存退出
systemctl daemon-reload #重新加载配置,配置文件修改后先执行此命令
systemctl start node_exporter #启动node_exporter
systemctl status node_exporter #查看node_exporter状态
systemctl stop node_exporter #停止node_exporter
systemctl restart node_exporter #重启node_exporter
systemctl enable node_exporter #设置开机启动
#查看端口有9100表示服务启动成功
ss -tnpl | grep node_exporter
#浏览器打开http://10.189.189.189:9100/metrics
#可以查看到node_exporter在被监控端的数据展示
同样操作,在所有被监控主机上安装node_exporter客户端组件
3、设置prometheus服务端配置文件,添加被监控的客户端主机
#在服务端的主机10.189.189.171上进行操作
cp /usr/local/prometheus/prometheus.yml /usr/local/prometheus/prometheus.yml-bak #备份原文件 vi /usr/local/prometheus/prometheus.yml #注意缩进格式 - job_name: "node_exporter" #在最后一行添加一个监控组的名称,可以自定义填写,注意格式 static_configs: - targets: ["10.189.189.189:9100","10.189.189.188:9100","10.189.189.187:9100"] #被监控主机的ip :wq! #保存退出
#这种新增监控节点的问题是每次添加完节点之后必须要重启Prometheus才能生效
systemctl daemon-reload #修改后重新加载配置
systemctl restart prometheus #重启prometheus
systemctl status prometheus #查看prometheus状态
#查看端口有9090表示服务启动成功
netstat -tnpl | grep prometheus
Status-Targets-可以看到新加入的主机信息
#通过file_sd_configs基于文件的服务发现动态添加节点信息
vi /usr/local/prometheus/prometheus.yml #在最后添加下面的代码 - job_name: "node_service_discovery" file_sd_configs: - files: - targets/*.json #加载prometheus安装目录下targets目录里面的所有json文件 refresh_interval: 15s #设置刷新时间间隔 :wq! #保存退出
mkdir -p /usr/local/prometheus/targets #创建json文件存放目录 vi /usr/local/prometheus/targets/dev_node.json #添加配置文件,注意缩进格式,否则出错 [ { "targets": ["10.189.189.189:9100","10.189.189.188:9100","10.189.189.187:9100"], "labels": { "env": "Dev" } } ] :wq! #保存退出
#也可以直接写路径 vi /usr/local/prometheus/prometheus.yml #在最后添加下面的代码 - job_name: "node_service_discovery" file_sd_configs: - files: ["/usr/local/prometheus/targets/dev_node.json"] refresh_interval: 15s #设置刷新时间间隔 :wq! #保存退出
#这种方式只要第一次配置的时候重启Prometheus,后面在dev_node.json文件中新增或删除节点是即时生效的,不需要重启Prometheus
systemctl daemon-reload #修改后重新加载配置
systemctl restart prometheus #重启prometheus
#查看端口有9090表示服务启动成功
netstat -tnpl | grep prometheus
Status-Targets-可以看到新加入的主机信息
4、在Prometheus服务端安装Alertmanager告警模块
Alertmanager是独立的告警模块,也可以单独一台服务器,这里我们和Prometheus放在一起。
4.1下载Alertmanager安装包
Alertmanager官方网站:https://prometheus.io/download/
下载二进制版的安装包
目前最新版本下载:
https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz
上传alertmanager-0.28.1.linux-amd64.tar.gz到/usr/local/src目录
4.2安装Alertmanager
#解压安装包到安装目录
cd /usr/local/src
tar zxvf alertmanager-0.28.1.linux-amd64.tar.gz -C /usr/local
#修改名称
cd /usr/local
mv /usr/local/alertmanager-0.28.1.linux-amd64 /usr/local/alertmanager
#直接使用默认配置文件启动
/usr/local/alertmanager/alertmanager --config.file="/usr/local/alertmanager/alertmanager.yml" --web.listen-address=:9093&
#查看端口有9093表示服务启动成功,默认端口是9093
netstat -tnpl | grep alertmanager
ss -tnpl | grep alertmanager
#查看进程
ps -ef | grep alertmanager
#关闭进程
pkill alertmanager
4.3添加Alertmanager为系统服务
vi /usr/lib/systemd/system/alertmanager.service #编辑
[Unit]
Description=alertmanager
Documentation=https://github.com/prometheus/alertmanager
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--storage.path=/usr/local/alertmanager/data \
--web.listen-address=:9093 \
--data.retention=120h
Restart=on-failure
[Install]
WantedBy=multi-user.target
:wq! #保存退出
systemctl daemon-reload #重新加载配置,配置文件修改后先执行此命令
systemctl start alertmanager #启动alertmanager
systemctl status alertmanager #查看alertmanager状态
systemctl restart alertmanager #重启alertmanager
systemctl enable alertmanager #设置开机启动
#浏览器打开http://10.189.189.171:9093/#/alerts
#看到下面的界面,说明启动成功
4.4修改配置文件,设置电子邮箱、钉钉、企业微信告警
mv /usr/local/alertmanager/alertmanager.yml /usr/local/alertmanager/alertmanager.yml-bak #备份 vi /usr/local/alertmanager/alertmanager.yml #设置电子邮箱、钉钉、企业微信告警,注意格式缩进 global: resolve_timeout: 5m smtp_smarthost: 'smtp.163.com:465' smtp_from: 'xxx@163.com' smtp_auth_username: 'xxx@163.com' smtp_auth_password: 'PIROILTMIYBQPMBV' smtp_require_tls: false route: group_by: ['alertname'] group_wait: 10s group_interval: 30s repeat_interval: 10m receiver: 'email' templates: - 'templates/*.tmpl' #启用电子邮箱告警模板 receivers: - name: 'email' email_configs: - to: 'xxx@qq.com' html: '{{ template "email.html" . }}' headers: Subject: "[WARN] 报警邮件 {{ .CommonLabels.instance }} {{ .CommonAnnotations.summary }}" - name: 'dingtalk' webhook_configs: - url: 'http://localhost:8060/dingtalk/webhook1/send' - name: 'wechat' wechat_configs: - corp_id: 'ww8a707d83c846b64e' to_user: '@all' agent_id: 1000002 api_secret: 'tR1AKbM-e1F2ThY5tTREPc4WtrigGJcXswN3ERAmGPA' :wq! #保存退出 #如果只需要邮件告警,可以删掉dingtalk和wechat的设置
4.4.1配置告警邮箱
#使用163邮箱进行配置
打开163邮箱-设置-POP3/SMTP/IMAP服务
开启这2个服务:
IMAP/SMTP服务已开启 | 关闭
POP3/SMTP服务已开启 | 关闭
记录下授权密码,后面需要用到:ZkvGnAZrgfFcas9W
确定
4.4.2配置钉钉告警
钉钉告警需要安装插件prometheus-webhook-dingtalk
先要在登录到钉钉,创建一个钉钉群,添加机器人,获取到Webhook:https://oapi.dingtalk.com/robot/send?access_token=710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq
还需要进行安全设置,ip白名单/自定义关键词/加签
#测试钉钉告警机器人
curl -H "Content-Type: application/json" -d '{"msgtype":"text","text":{"content":"prometheus alert test"}}' https://oapi.dingtalk.com/robot/send?access_token=710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq
#插件下载地址
https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
上传到/usr/local/src目录下
#解压并重命名
cd /usr/local/src
tar -zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /usr/local
#修改目录名字
cd /usr/local/
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 prometheus-webhook-dingtalk
#设置目录权限
cd /usr/local/
chown -R prometheus:prometheus prometheus-webhook-dingtalk
#配置文件
cd /usr/local/prometheus-webhook-dingtalk
cp config.example.yml config.yml
vi /usr/local/prometheus-webhook-dingtalk/config.yml #修改 targets: webhook1: url: https://oapi.dingtalk.com/robot/send?access_token=710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq # secret for signature secret: 710032786f31b5f88e13de897aee9ca9ed6f4ea2a7bfc21c82787aa1d0097qqq :wq! #保存退出
#直接使用默认配置文件启动
cd /usr/local/prometheus-webhook-dingtalk
/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &
#查看端口有8060表示服务启动成功
ss -tnpl | grep prometheus-webh
#查看进程
ps -ef | grep prometheus-webh
#关闭进程
pkill prometheus-webh
#添加开机启动
vi /usr/lib/systemd/system/prometheus-webhook-dingtalk.service
[Unit]
Description=prometheus-webhook-dingtalk
After=network-online.target
[Service]
User=prometheus
Restart=on-failure
ExecStart=/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk \
--config.file=/usr/local/prometheus-webhook-dingtalk/config.yml
[Install]
WantedBy=multi-user.target
:wq! #保存退出
systemctl daemon-reload #重新加载配置
systemctl start prometheus-webhook-dingtalk #启动prometheus-webhook-dingtalk
systemctl status prometheus-webhook-dingtalk #查看prometheus-webhook-dingtalk状态
systemctl stop prometheus-webhook-dingtalk #停止prometheus-webhook-dingtalk
systemctl restart prometheus-webhook-dingtalk #重启prometheus-webhook-dingtalk
systemctl enable prometheus-webhook-dingtalk #设置开机启动
#查看端口有8060表示服务启动成功
ss -tnpl | grep prometheus-webh
#测试
curl http://localhost:8060/dingtalk/webhook1/send -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content": "监控告警"}}'
4.4.3配置企业微信告警
wechat_configs部分参数说明:
登录企业微信网站:https://work.weixin.qq.com/
api_secret: 企业微信("企业应用"-"自定应用"[Alertmanager微信告警]- "Secret")
corp_id(企业ID)("我的企业"-"CorpID"[在底部])
agent_id: 企业微信("企业应用"-"自定应用"[Alertmanager微信告警]-"AgentId")
to_user: '@all' :发送报警到所有人
4.4.4添加电子邮箱告警配置模板
mkdir -p /usr/local/alertmanager/templates/
vi /usr/local/alertmanager/templates/email.tmpl
{{ define "email.html" }}
{{ range .Alerts }}
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br>
{{ end }}
{{ end }}
:wq! #保存退出
参数说明:{{ .StartsAt.Format "2006-01-02 15:04:05" }} 这里的时间必须设置为go语言的诞生时间,不能乱写
#检查配置文件
cd /usr/local/alertmanager
./amtool check-config alertmanager.yml
浏览器打开http://10.189.189.171:9093/#/status 查看状态
5、关联Prometheus服务端与Alertmanager组件
#Alertmanager是独立的组件,告警信息是通过Prometheus服务端推送过来的,所以需要在服务端Prometheus中关联Alertmanager组件并添加告警规则文件。
vi /usr/local/prometheus/prometheus.yml #配置prometheus关联Alertmanager global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - 10.189.189.171:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "rules/*.yml" # - "first_rules.yml" # - "second_rules.yml" :wq! #保存退出
mkdir -p /usr/local/prometheus/rules #创建规则目录 vi /usr/local/prometheus/rules/node_alerts.yml #添加编辑 groups: - name: 实例存活告警规则 rules: - alert: 实例存活告警 # 告警规则的名称(alertname) expr: up == 0 # expr 是计算公式,up指标可以获取到当前所有运行的Exporter实例以及其状态,即告警阈值为up==0 for: 30s # for语句会使 Prometheus 服务等待指定的时间, 然后执行查询表达式。(for 表示告警持续的时长,若持续时长小于该时间就不发给alertmanager了,大于该时间再发。for的值不要小于prometheus中的scrape_interval,例如scrape_interval为30s,for为15s,如果触发告警规则,则再经过for时长后也一定会告警,这是因为最新的度量指标还没有拉取,在15s时仍会用原来值进行计算。另外,要注意的是只有在第一次触发告警时才会等待(for)时长。) labels: # labels语句允许指定额外的标签列表,把它们附加在告警上。 severity: Disaster annotations: # annotations语句指定了另一组标签,它们不被当做告警实例的身份标识,它们经常用于存储一些额外的信息,用于报警信息的展示之类的。 summary: "节点失联" description: "节点断联已超过1分钟!" - name: 内存告警规则 rules: - alert: "内存使用率告警" expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 75 # 告警阈值为当内存使用率大于75% for: 30s labels: severity: warning annotations: summary: "服务器内存报警" description: "内存资源利用率大于75%!(当前值: {{ $value }}%)" - name: 磁盘报警规则 rules: - alert: 磁盘使用率告警 expr: (node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100 > 80 # 告警阈值为某个挂载点使用大于80% for: 1m labels: severity: warning annotations: summary: "服务器 磁盘报警" description: "服务器磁盘设备使用超过80%!(挂载点: {{ $labels.mountpoint }} 当前值: {{ $value }}%)" :wq! #保存退出
#添加对alertmanager的监控
vi /usr/local/prometheus/targets/dev_node.json #编辑添加
"10.189.189.171:9093" #添加
:wq! #保存退出
#检查配置文件
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
systemctl daemon-reload #修改后重新加载配置
systemctl restart prometheus #重启prometheus
systemctl daemon-reload
systemctl restart alertmanager
6、测试Alertmanager告警
#查看节点状态
http://10.189.189.171:9090/alerts
#日志分析,寻找任何错误或警告信息,特别是与发送邮件相关的错误提示,比如认证失败、连接超时等
journalctl -u alertmanager -f
#关闭一台客户端服务器,查看电子邮箱、钉钉、企业微信是否收到告警信息
7、安装部署grafana
在服务端安装部署
下载地址:https://grafana.com/grafana/download
目前最新版本:https://dl.grafana.com/enterprise/release/grafana-enterprise-12.0.1.linux-amd64.tar.gz
上传grafana-enterprise-12.0.1.linux-amd64.tar.gz到/usr/local/src目录
7.1安装grafana
cd /usr/local/src
tar -zxvf grafana-enterprise-12.0.1.linux-amd64.tar.gz -C /usr/local
#修改名称
cd /usr/local
mv grafana-v12.0.1 grafana
#使用默认文件启动grafana
cd /usr/local/grafana #先进入安装目录,再启动
/usr/local/grafana/bin/grafana-server & #启动
#如果不加 --config参数,Grafana默认会去读conf里面的配置文件
#查看端口有3000表示服务启动成功
netstat -lnptu | grep 3000
#查看进程
ps -ef | grep grafana
#关闭进程
pkill grafana
7.2把grafana服务加入系统环境变量
vi /etc/profile
#set grafana environment
export PATH=$PATH:/usr/local/grafana/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效
7.3设置grafana开机自启动
vi /usr/lib/systemd/system/grafana.service #编辑
[Unit]
Description=Grafana
After=network.target
[Service]
Type=notify
ExecStart=/usr/local/grafana/bin/grafana-server -homepath=/usr/local/grafana
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
:wq! #保存退出
systemctl daemon-reload #重新加载配置,配置文件修改后先执行此命令
systemctl start grafana #启动node_exporter
systemctl status grafana #查看node_exporter状态
systemctl restart grafana #重启node_exporter
systemctl enable grafana #设置开机启动
浏览器打开http://10.189.189.171:3000/
默认用户名和密码admin/admin
可以选择修改新密码,也可以点击Skip跳过,建议修改。
7.4在Grafana上添加Prometheus数据源
把prometheus服务端收集的数据做为一个数据源添加到grafana,通过grafana展示出来
#添加prometheus数据源,登录http://10.189.189.171:3000/
点击左侧Connection-Data Source-Add data source
选择Prometheus
Prometheus server URL *:http://10.189.189.171:9090/
其他参数保持默认即可
点击 Save & test
7.5添加Linux系统监控模板
Grafana官方提供模板地址:https://grafana.com/grafana/dashboards
Linux系统监控模板
英文版:https://grafana.com/grafana/dashboards/1860-node-exporter-full/
下载地址:https://grafana.com/api/dashboards/1860/revisions/40/download
中文版:https://grafana.com/grafana/dashboards/16098-node-exporter-dashboard-20240520-job/
下载地址:https://grafana.com/api/dashboards/16098/revisions/5/download
中文版:https://grafana.com/grafana/dashboards/8919-node-exporter-dashboard-20240520-tensuns/
下载地址:https://grafana.com/api/dashboards/8919/revisions/26/download
登录后可以修改语言为中文
导入模板:
首页-仪表盘-新建-导入-上传仪表板 JSON 文件-选择数据源Prometheus-Import
查看模板:
首页-仪表盘-名称,可以看到刚刚导入的模板列表,点击相应的名称就能打开监控面板
至此,Linux下安装部署Prometheus+Alertmanager+Grafana监控平台完成。



