其他
Prometheus + Grafana,开源监控神器!
耗时8个月联合打造 《 2023年Java高薪课程 》,已更新了 102G 视频,累计更新时长 500+ 个小时,需要的小伙伴可以了解下,一次购买,持续更新,无需2次付费。
1
Prometheus介绍2
Prometheus及其组件安装wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至服务器
tar -xzvf prometheus-2.32.1.linux-amd64.tar.gz -C Program # 解压到指定目录
mv Program/prometheus-2.32.1.linux-amd64 Program/prometheus-2.32.1 # 重命名
# 运行prometheus
cd prometheus-2.32.1 # 进入解压并重命名后的目录
./prometheus # 运行prometheus
./prometheus --config.file=prometheus.yml # 或者指定配置文件运行
# 以上两种都是前台运行,要想执行其它操作需先结束prometheus,所以可以使用nohup命令使其后台运行
nohup ./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &
[Unit]
Description=Prometheus
# 先启动network.target
After=network.target
[Service]
# 定义启动默认进程,即主进程
Type=simple
# 以root用户启动
User=root
# 启动当前服务的命令,注意修改路径和参数
ExecStart=/root/Program/prometheus-2.32.1/prometheus --config.file=/root/Program/prometheus-2.32.1/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至被测服务器
tar -xzvf mysqld_exporter-0.13.0.linux-amd64.tar.gz # 解压压缩包
mv mysqld_exporter-0.13.0.linux-amd64 mysqld_exporter-0.13.0 # 重命名
[client]
user=root
password=123456
# 在prometheus.yml文件中添加如下信息,指明监控目标
- job_name: mysqld_exporter
static_configs:
- targets: ["192.166.66.22:9104"]
# 进入pushgateway-1.4.2目录,启动mysqld_exporter
./pushgateway --config.my-cnf=/root/mysqld_exporter-0.13.0/.my.cnf # ←前台运行,↓或者后台运行
nohup ./mysqld_exporter --config.my-cnf=/root/mysqld_exporter-0.13.0/.my.cnf > mysqld_exporter.log 2>&1 &
# 也可以使用service文件启动,参考上文service文件配置
安装supervisor:yum install supervisor -y 启动并设为开机自启:systemctl start supervisord.service && systemctl enable supervisord.service 配置启动文件,自建配置文件通常放在/etc/supervisord.d/目录,创建ini格式的文件vim mysqld_exporter.ini,填写如下信息
# 名称
[program:mysqld_exporter]
# 以root用户启动
user=root
# 启动mysqld_exporter的命令
command=/root/mysqld_exporter-0.13.0/mysqld_exporter --config.my-cnf=/root/mysqld_exporter-0.13.0/.my.cnf
# 设为自启,随supervisor启动,后续只需关心supervisor的状态
autostart=true
# 设为自动重启,随supervisor而重启
autorestart=true
# 日志保存路径
stdout_logfile=/root/mysqld_exporter-0.13.0/mysqld_exporter.log
# 日志文件保留个数,等于0则不备份
stdout_logfile_backups=10
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至被测服务器
tar -xzvf node_exporter-1.3.1.linux-amd64.tar.gz -C Program # 解压到指定目录
mv Program/node_exporter-1.3.1.linux-amd64 Program/node_exporter-1.3.1 # 重命名
# 在prometheus.yml文件中添加如下信息,指明监控目标
- job_name: node_exporter
static_configs:
- targets: ["localhost:9100"]
labels: # 添加标签
nodename: node_24 # 为服务器添加标签名称
- targets: ["192.166.66.22:9100"]
labels:
nodename: node_22
# 两个服务器节点可以也写一起,如下所示:
- job_name: node_exporter
static_configs:
- targets: ["localhost:9100","192.166.66.22:9100"]
# 进入node_exporter-1.3.1目录,启动node_exporter
./node_exporter # 前台运行
nohup ./node_exporter --web.listen-address=":9100" > node_exporter.log 2>&1 & # 使用nohup命令后台运行
# 也可以使用service文件和supervisor方式启动,具体参考上文配置
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz # 在线下载资源包,也可直接访问地址在浏览器下载后上传至服务器
tar -xzvf alertmanager-0.23.0.linux-amd64.tar.gz -C Program # 解压到指定目录
mv alertmanager-0.23.0.linux-amd64 alertmanager-0.23.0 # 重命名
global: # 全局配置,配置发送邮件的信息
smtp_smarthost: smtp.qq.com:465 # 腾讯邮箱服务器及端口
smtp_from: 1234567890@qq.com # 用于发送告警的邮箱
smtp_auth_username: 1234567890@qq.com # 登录的邮箱名
smtp_auth_password: dydiacuvduanyqdi # 邮箱授权码,请登录用于发送的邮箱在设置→账户中开启
smtp_require_tls: false # 不启用TLS
route: # 路由组配置
group_by: ['alertname'] # 分组依据,可分多个组
group_wait: 30s # 第一次满足告警条件后等待多久发送邮件
group_interval: 50s # 出现新告警后等待多久发送邮件
repeat_interval: 2h # 若已经成功发送邮件等待多久后再次发送
receiver: 'email' # 定义收件组名称
receivers: # 收件组配置
- name: 'email'
email_configs:
- to: 987654321@qq.com # 收件人邮箱,可添加多个邮箱
……
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
# 进入alertmanager-0.23.0目录,启动node_exporter
./alertmanager --config.file=/root/Program/alertmanager-0.23.0/alertmanager.yml # 前台运行
nohup ./alertmanager --config.file=/root/Program/alertmanager-0.23.0/alertmanager.yml --cluster.advertise-address="0.0.0.0:9093" > alertmanager.yml.log 2>&1 & # 后台运行
# 同样也可使用service文件和supervisor方式启动,具体参考上文配置
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093 # 取消注释,将alertmanager改为IP或主机名
rule_files:
- "first_rules.yml" # 取消注释
- "second_rules.yml" # 取消注释,可直接把规则写在一个yml文件中,此处分了两个,second调用first中的信息
scrape_configs:
………………忽略之前的配置信息,追加以下信息……………………
- job_name: alertmanager
static_configs:
- targets: ["localhost:9093"]
创建first_rules.yml文件,vim first_rules.yml,添加一条规则,如下
groups:
- name: node_rules
rules:
- record: instance:node_load
expr: node_load1
groups:
- name: node_alerts
rules:
- alert: system_load
expr: instance:node_load > 5
for: 2m
labels:
severity: warning
annotations:
summary: 主机【{{$labels.nodename}}】的2分钟负载超出阈值,当前为{{$value}}%
{{ define "mytemp.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
********** <span style=color:red;font-size:36px;font-weight:bold;> 监控告警 </span>**********<br>
<span style=font-size:20px;font-weight:bold;> 告警类型:</span> {{ $alert.Labels.alertname }} <br>
<span style=font-size:20px;font-weight:bold;> 告警级别:</span> {{ $alert.Labels.severity }} 级 <br>
<span style=font-size:20px;font-weight:bold;> 故障主机:</span> {{ $alert.Labels.instance }} <br>
<span style=font-size:20px;font-weight:bold;> 主机标签:</span> {{ $alert.Labels.nodename }} <br>
<span style=font-size:20px;font-weight:bold;> 告警内容:</span> {{ $alert.Annotations.summary }} <br>
<span style=font-size:20px;font-weight:bold;> 故障时间:</span> {{ $alert.StartsAt.Local }}<br>
********** ~ 结束 ~ **********<br>
<br>
<br>
{{- end }}
{{- end }}
{{- end }}
templates: # 配置自定义告警邮件格式地址
- '/root/Program/alertmanager-0.23.0/template/mytemp.tmpl'
receivers:
……忽略已配置信息……
html: '{{ template "mytemp.html" . }}' # 自定义使用的邮件模板和邮件标题
headers: { Subject: "告警邮件:{{ .GroupLabels.SortedPairs.Values}}[{{.Status | toUpper}}:{{ .Alerts.Firing | len }}]" }
8.再次使用压测工具,对系统进行负载测试,满足设定规则后就会收到自定义格式的告警邮件啦
3
Grafana介绍wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.3-1.x86_64.rpm # 下载Grafana
yum install grafana-enterprise-8.3.3-1.x86_64.rpm -y # 安装Grafana
systemctl start grafana-server && systemctl enable grafana-server # 启动并设为开机自启
【福利】2023 高薪课程,全面来袭(视频+笔记+源码)
往期推荐