技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Prometheus>正文
Linux下安装部署Prometheus+Alertmanager+Grafana监控平台
2025年06月09日 Prometheus 暂无评论 ⁄ 被围观 165次+

组件介绍:

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监控平台完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2025 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3