centos7下部署主机监控,mysql指标监控,(prometheus+grafana+node_exporter+mysqld_exporter+alertmanager)

先解释一下这些组件都是干什么用的,

  1. 组件说明
  2. prometheus server 是 Prometheus 组件中的核心部分,负责实现对监控数据的获取,存储以 及查询。
  3. exporter 简单说是采集端,通过 http 服务的形式保留一个 url 地址,prometheus server 通过 访问该 exporter 提供的 endpoint 端点,即可获取到需要采集的监控数据。
  4. AlertManager 在 prometheus 中,支持基于 PromQL 创建告警规则,如果满足定义的规则,则会产生一条 告警信息,进入 AlertManager 进行处理。可以集成邮件,微信或者通过 webhook 自定义报 警。
  5. (这里没用到pushgateway,但是做一个普及) Pushgateway 由于 Prometheus 数据采集采用 pull 方式进行设置的, 内置必须保证 prometheus server 和 对应的 exporter 必须通信,当网络情况无法直接满足时,可以使用 pushgateway 来进行中转, 可以通过 pushgateway 将内部网络数据主动 push 到 gateway 里面去,而 prometheus 采用 pull 方式拉取 pushgateway 中数据。

一、主机说明:

主机mysql120(后期做mysql从库现在不用管)
host:192.168.251.120
安装:prometheus,grafana,alertmanager,node_exporter,mysql,mysqld_exporter
主机mysql121(后期做mysql主库现在不用管)
host:192.168.251.121
安装:node_exporter,mysql,mysqld_exporter
接下来,先去mysql120安装prometheus和grafana
需要安装的软件,以及版本号
以上软件包,除了mysql要求5.7.29以外,其他都可以上最新版。当然和我一样的版本一定不会出错

二、解压安装prometheus软件

tar -zxvf prometheus-2.34.0-rc.0.linux-amd64.tar.gz -C /usr/local/

解压prometheus
设置软连接,创建data目录

cd /usr/local/
ln -s /usr/local/prometheus-2.34.0-rc.0.linux-amd64/ /usr/local/prometheus
mkdir /usr/local/prometheus/data

设置软连接,创建data目录
添加到系统服务(prometheus)

添加到系统服务(prometheus)
vim /usr/lib/systemd/system/prometheus.service

[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus \
--storage.tsdb.path=/usr/local/prometheus/data \
--config.file=/usr/local/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target

下面的命令开启服务并且开机自启
systemctl start prometheus
systemctl enable prometheus
systemctl status prometheus

反斜杠的作用是将特殊符号字符的特殊含义屏蔽掉,使其还是原字符。
保存退出prometheus.service文件
接下来执行:开启prometheus服务,使其开机启动,查看其运行状态,如果是绿色的active(running)表示启动成功
服务开启成功
打开网页,地址:主机+端口
比如我的:192.168.251.120:9090
说明prometheus部署成功

三、安装grafana

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.5-1.x86_64.rpm
sudo yum install grafana-enterprise-8.4.5-1.x86_64.rpm
这个是在线安装,不用配置太多文件,安装成功之后设置启动和开机自启
systemctl restart grafana-server
systemctl enable grafana-server

安装成功

然后点击网页:192.168.251.120:3000
输入账户密码:默认都是admin,回车之后会让你重新设置账号密码,再输入一遍admin,这是为了让你修改账户密码,你再设置一样的就行。
grafana页面
链接prometheus数据源,点击左边列表小齿轮,datasource,进去,
在这里插入图片描述

点击add data source,再点击prometheus,
在这里插入图片描述

然后开始配置参数,主要就一个,url填写你的localhost:9090,比如我的就是192.168.251.120:9090,在这里插入图片描述

然后点击最下面,点击 save & test 这步必须通过,如果显示绿色提示框框,说明通过,(注意是两个绿色,左下角和右上角绿色对钩框框)
在这里插入图片描述

然后不要退出,点击最上面setting旁边的,dashboard,然后点击import,最上面得prometheus stats。
在这里插入图片描述
在这里插入图片描述

然后grafana部署暂时告一段落。
接下来

四、安装node_exporter

安装node_exporter,创造软连接,配置service文件,修改prometheus.yml文件,添加监控端口
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/node_exporter-1.3.1.linux-amd64/ /usr/local/node_exporter
vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=Prometheus node_exporter
[Service]
User=nobody
ExecStart=/usr/local/node_exporter/node_exporter --log.level=error
ExecStop=/usr/bin/killall node_exporter
[Install]
WantedBy=default.target

启动node_exporter并查看状态,设置开机自启
systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter

在这里插入图片描述
在这里插入图片描述
去prometheus.yml 文件中添加监控端口,打开prometheus.yml添加如下代码

vim /usr/local/prometheus/prometheus.yml

  - job_name: 'host_monitor'
    scrape_interval: 5s
    static_configs:
    - targets: ['192.168.251.120:9100']
      labels:
        instance: localhost:9100    

下图是打开的prometheus.yml文件
在这里插入图片描述
下图是添加代码过后的prometheus.yml文件,注意缩进,缩进有问题,运行会出错!!!
在这里插入图片描述
检查看到success就说明格式正确,重启prometheus吧.

检查配置文件
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
重启prometheus
systemctl restart prometheus

在这里插入图片描述
这个时候去prometheus网页查看,点击status,然后选择target,可以看到监控到的主机信息
页面:192.168.251.120:9090 你可以参考你的host地址

在这里插入图片描述
下面进入到grafana页面,地址:192.168.251.120:3000,你可以参考你的host地址
点击左边的小加号,点击import
在这里插入图片描述
输入8919,点击右边的load,到最下面一行选择数据源prometheus然后点击import
在这里插入图片描述
这就是你监控到的数据,主机192.168.251.120中的主机各个指标参数,比如cpu负载,网络负载,内存负载之类的。这里做一个简要说明,node_exporter是部署在你需要监控的主机上,比如我们在192.168.251.120上部署,所以监控的就是这台主机,prometheus是将node_exporter上的数据pull过来,保存起来,所有的数据都是在prometheus上面,如果有多台主机需要监控,那么每台主机都装上node_exporter ,并且在安装prometheus的主机中配置prometheus.yml文件,在其中加入主机号:端口号,如同前面的操作,只不过碰巧这次prometheus和node_exporter都安装到了一台机子,后面再添加一台主机,还要安装node_exporter,大家可以自己体会一下,另外,grafana这次也碰巧安装在主机192.168.251.120上面,其实它也可以安装在别的主机上,但是当配置URL数据源的时候,只要地址协商prometheus的主机地址就行了,url前面配置过了,就是http://192.168.251.120:9090,往前翻看看,在grafana页面配置的。
在这里插入图片描述
以上就完成了基于prometheus+node_exporter+grafana架构的对主机资源进行监控的部署

五、安装alertmanager,告警组件

上面的组件其实安装没有要求,但是alertmanager需要安装道prometheus安装的主机上,也就是192.168.251.120
开整:

tar -zxvf alertmanager-0.23.0.linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/alertmanager-0.23.0.linux-amd64/ /usr/local/alertmanager

在这里插入图片描述

配置service文件,方便开机启动
vim /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=alertmanager System
Documentation=alertmanager System
[Service]
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml
[Install]
WantedBy=multi-user.target

检查配置文件语法
./amtool check-config alertmanager.yml
开启alertmanager,并配置开机自启,检查启动状态
systemctl start alertmanager
systemctl enable alertmanager
systemctl status alertmanager

在这里插入图片描述
接下来配置alertmanager.yml文件,这个文件是设置告警的,可以设置告警级别,出现告警分发给谁,微信告警还是邮件告警,等一系列设置,直接删除alertmanager.yml原文件内容,填充下面代码,当然有些内容需要改:凡是后面带##的描述性信息的语句都要注意,要改成自己的信息
做一个简要说明:
修改配置文件alertmanager.yml,注意,下面的smtp_smarthost:是说明用的是网易邮箱,不用变,需要改动参数的是smtp_from:用自己的邮箱,smtp_auth_username: 也是自己的邮箱,这两个都是163邮箱,一样就行,smtp_auth_password:这个参数需要配置的是自己的邮箱的授权码,不懂得自己去百度。不是密码,是授权码,可以去邮箱网站里面的设置里获取。下面有一个-to:参数,我换了126的邮箱。注意##后面的描述性信息,!!!
企业微信需要自己注册,3分钟完事,需要获取三个信息:
corp_id: 企业微信账号唯一 ID, 可以在我的企业中查看。
agent_id: 第三方企业应用的 ID
api_secret: 第三方企业应用的密钥

vim /usr/local/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.163.com:25'##这条内容引号里的意思是用163邮箱,不用管
  smtp_from: 'shitouym182@163.com'##这条内容引号里的意思是发送邮箱,改成你的163
  smtp_auth_username: 'shitouym182@163.com'##同上
  smtp_auth_password: 'DPUVGIOIPMEKTAAH'##这个是授权码,写成自己的
  smtp_require_tls: false

templates:
  - '/usr/local/alertmanager/*.tmpl'##这个是告警模板,

route:
  group_by: ['severity']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 3m
  receiver: 'email'
  routes:
  - match:
      severity: critical
    receiver: 'leader'
    continue: true
  - match_re:
      severity: ^(warning|critical)$
    receiver: 'devops'
    continue: true

receivers:
- name: 'email'
  email_configs:
  - to: 'shitouym182@126.com'##改成自己的126邮箱,这个作为接受告警信息的邮箱
    html: '{{ template "email.to.html" . }}'
    send_resolved: true

- name: 'leader'
  email_configs:
  - to: 'shitouym182@163.com'##同理,改成163邮箱,自己的
    html: '{{ template "email.to.html" . }}'
    send_resolved: true

- name: 'devops'
  wechat_configs:
  - corp_id: 'wwcfeb65c298e4f553'##这个是企业微信的公司id,可以再我的企业里查看
    to_user: 'LiAnFu'##这个是企业微信的管理员,建议注册时用真名,这里就用拼音了。
    agent_id: '1000002'##第三方企业应用的id
    api_secret: 'x5JXxD0Xqd_K-e9WqsRV6iJEpuMPxJXTWzHimSNmnPM'##第三方企业秘钥
    send_resolved: true
    message: '{{ template "wechat.tmpl" . }}'

inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'instance']

配置完成之后记得检查语法

/usr/local/alertmanager/amtool check-config alertmanager.yml
如若报错,根据报错内容,修改,上述格式没有问题,但是提示的部分需要修改自己的信息。
重启告警模块
systemctl restart alertmanager

在这里插入图片描述
接下来修改prometheus的文件

vim /usr/local/prometheus/prometheus.yml

修改 prometheus.yml 的 alerting 部分,注意,地址写自己的ip地址,我的主机ip:- 192.168.251.120:9093

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 192.168.251.120:9093

2、定义告警文件:
rule_files:
  - "rules/*.yml"

在这里插入图片描述
在这里插入图片描述
检查修改之后是否正确,每次修改完配置文件,都需要检查语法

/usr/local/prometheus/promtool check config prometheus.yml

在这里插入图片描述
接下来进入prometheus目录,创建一个rules目录,这里要放置告警规则,首先写一个告警规则host_monitor.yml

cd /usr/local/prometheus
mkdir rules
cd rules/
vim host_monitor.yml

groups: 
- name: node-up
  rules: 
  - alert: node-up
    expr: up == 0
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "{{$labels.instance}}Instance has been down for more than 15 seconds"

配置完成同样需要检查语法:

/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
如果没有报错,那么重启prometheus
systemctl restart prometheus

在这里插入图片描述
此时,可以打开prometheus网页,查看,alertmanager正在监控相关指标
地址:192.168.251.120:9090
在这里插入图片描述
尝试告警:

这里先重启一下alertmanager和prometheus,保证所有参数变更生效
systemctl restart alertmanager
systemctl restart prometheus
然后关掉node_exporter
systemctl stop node_exporter

这个时候可以打开prometheus网页,地址:192.168.251.120:9090,进入Alerts页面可以看到监控节点变黄了,等一会就马上会变红,报错
在这里插入图片描述
再刷新一下,变红了
在这里插入图片描述
然后打开你的126邮箱,你会发现告警邮件发来了,
在这里插入图片描述
再把node_exporter打开,还会收到恢复的邮件,这里不再演示

systemctl start node_exporter

但是邮件显示内容不够有友好,我们修改告警信息显示模板,

邮件模板:
vim /usr/local/alertmanager/email.tmpl

{{ define "email.to.html" }}
{{ range .Alerts }} =========start==========<br>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt }} <br>
=========end==========<br>
{{ end }}
{{ end }}

修改完告警模板之后需要检查语法并重启alertmanager服务

 /usr/local/alertmanager/amtool check-config alertmanager.yml
 systemctl restart alertmanager
 然后再尝试停滞node_exporter
 systemctl stop node_exporter

在这里插入图片描述
这个时候告警邮件描述信息非常友好
在这里插入图片描述
添加cpu监控告警规则
进入rules目录

cd /usr/local/prometheus/rules

groups:
- name: cpu_load
  rules:
  - alert: cpu_load
    expr: node_load5 / (count without (cpu, mode) (node_cpu_seconds_total{mode="system"})) > 10
    for: 5s
    labels:
      severity: 'warning'
      team: cpu
    annotations:
      summary: "CPU load (5m) avg is high\n VALUE = {{ $value }}\n LABELS: {{ $labels }}"

完事之后检查一下语法规则,这个其实配不配之都无所谓,多了一个监控CPU的节点而已
/usr/local/prometheus/promtool check config prometheus.yml
如果没报错,重启prometheus服务,毕竟修改了配置文件,生效需要重启
systemctl restart prometheus

在这里插入图片描述
可以看到,cpu节点也监控到了。
以上就是基于prometheus+grafana+node_exporter+alertmanager架构的主机指标信息采集监控以及异常告警,邮件告警,(前面还配置了的企业微信告警,后面会用到)。

六、安装mysql

国内镜像网站可以找到,一般企业里面5.7是主流,我安装的就是5.7.29
下载安装包,
解压到目标路径,
创建软连接。
创建用户名,
配置环境变量,
重新加载环境变量
查看mysql和mysqld版本号

tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64/ /usr/local/mysql
ln -s /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64/ /usr/local/mysql
useradd -s /sbin/nologin mysql120
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source /etc/profile
mysql -V
mysqld -V

安装成功
在这里插入图片描述

创建目录及设定权限
mkdir /data/mysql/mysql3306/{data,logs,binlog} -p
chown -R mysql120.mysql120 /usr/local/mysql/ /data/

my3306.cnf配置文件简易版本mysql配置

vim /data/mysql/mysql3306/my3306.cnf

[mysql]
prompt="\u@\h [\d]>"
[mysqld]
user = mysql120
basedir = /usr/local/mysql
datadir = /data/mysql/mysql3306/data
log-error=/data/mysql/mysql3306/data/error_3306.log
server_id = 120
port = 3306
log_bin=/data/mysql/mysql3306/binlog/mysql-bin
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true
socket = /tmp/mysql3306.sock

初始化数据库
授权
启动数据库

/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize-insecure
chown -R mysql120.mysql120 /usr/local/mysql* /data/
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &

打开退出mysql:

mysql -S /tmp/mysql3306.sock
quit

在这里插入图片描述

七、安装mysql_exporter

解压文件到指定目录
tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
创建软连接
ln -s /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /usr/local/mysqld_exporter
配置文件mysqld_exporter.service:
vim /usr/lib/systemd/system/mysqld_exporter.service

[Unit]
Description=mysql Monitoring SystemDocumentation=mysql Monitoring System
[Service]
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
--collect.info_schema.processlist \
--collect.info_schema.innodb_tablespaces \
--collect.info_schema.innodb_metrics \
--collect.perf_schema.tableiowaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tablelocks \
--collect.engine_innodb_status \
--collect.perf_schema.file_events \
--collect.binlog_size \
--collect.info_schema.clientstats \
--collect.perf_schema.eventswaits \
--config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
[Install]
WantedBy=multi-user.target
配置文件.my.cnf:
vim /usr/local/mysqld_exporter/.my.cnf

[client]
host=localhost
user=exporter
password=123456
socket=/tmp/mysql3306.sock
将mysql暴露给mysql_exporter
打开mysql:
mysql -S /tmp/mysql3306.sock
输入:
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'exporter'@'localhost' IDENTIFIED BY '123456';

刷新权限,输入
flush privileges;

在这里插入图片描述
此时数据库配置完毕,准备启动mysqld_exporter 服务,并设置开机自启

quit退出mysql
systemctl start mysqld_exporter
systemctl enable mysqld_exporter

在这里插入图片描述
这个时候mysql部署完成,既然要监控它,则需要在prometheus.yml文件中去监听它的地址端口,下面进行配置:

进入prometheus目录
cd /usr/local/prometheus
打开prometheus.yml文件,最下面添加代码,注意缩进,地址写你安装mysql和mysqld_exporter的主机地址,这里碰巧安装prometheus和mysql是一台机器,地址就是192.168.251.120:9104
vim prometheus.yml

  - job_name: "mysql_monitor"
    static_configs:
      - targets: ["192.168.251.120:9104"]

在这里插入图片描述
后面还会去另一台主机上安装mysql,到时候还要在这台主机的prometheus.yml文件中监听那台的地址端口,后面细说。
检查无误重启prometheus,配置完文件需要重启服务生效

/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
systemctl restart prometheus

在这里插入图片描述
这个时候去prometheus网页上,点击status,点击targets,可以看到mysql_monitor的监控数据,
在这里插入图片描述
去grafana网页:192.168.251.120:3000,可以点击左边小加号,点击import,输入7362,点击右边load
在这里插入图片描述
最下面选择一个复选框,点击下拉菜单选择prometheus数据源,点击import,可以看到mysql的一些指标已经被监控到了,如果没有数据,就等一会儿。(具体监控的指标都在页面里,至于监控哪些数据一开始写到了mysqld_exporter.service文件里)
在这里插入图片描述
到此为止,基于prometheus+grafana+mysql+mysqld_exporter架构的mysql指标监控就已经完成了,后面开始建立mysql数据告警和mysql主从监控告警。
接下来上第二胎机器,在主机192.168.251.121上面进行部署mysql、mysqld_exporter、node_exporter这三个组件,还需要在192.168.251.120上面进行prometheus.yml 文件添加监听端口,添加mysql.yml告警规则等。

八、在192.168.251.121上部署mysql及其它组件

这里我再详细得带大家从头走一遍mysql和mysqld_exporter以及node_exporter的安装,有局部细节参数需要修改,仔细体会。

解压软件到指定目录:
tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
创建软连接:
ln -s /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64/ /usr/local/mysql
创建用户,这里是mysql121
useradd -s /sbin/nologin mysql121
添加全局变量:
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source一下,让环境变量生效,其实再开一个窗口,那个窗口会失效的,最好的办法是重启一下系统。
source /etc/profile
创建目录及设定权限
mkdir /data/mysql/mysql3306/{data,logs,binlog} -p
chown -R mysql121.mysql121 /usr/local/mysql/ /data/
my3306.cnf配置文件,这里注意,用户是mysql121,server_id是121,和前面那台主机不一样。
vim /data/mysql/mysql3306/my3306.cnf

[mysql]
prompt="\u@\h [\d]>"
[mysqld]
user = mysql121
basedir = /usr/local/mysql
datadir = /data/mysql/mysql3306/data
log-error=/data/mysql/mysql3306/data/error_3306.log
server_id = 121
port = 3306
log_bin=/data/mysql/mysql3306/binlog/mysql-bin
binlog_format=row
gtid-mode=on
enforce-gtid-consistency=true
socket = /tmp/mysql3306.sock
初始化数据库:
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf --initialize-insecure
授权,启动mysql
chown -R mysql121.mysql121 /usr/local/mysql* /data/
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my3306.cnf &

如若想打开mysql:
mysql -S /tmp/mysql3306.sock
退出就是:quit
mysql没有设置自启,如果想关闭需要在mysql下输入 shutdown; 然后quit
接下来安装mysqld_exporter,
这个和前面一致,为了节省大家时间,我带大家再走一遍

解压文件到指定目录
tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
创建软连接
ln -s /usr/local/mysqld_exporter-0.12.1.linux-amd64/ /usr/local/mysqld_exporter

mysqd_exporter.service配置文件:
vim /usr/lib/systemd/system/mysqld_exporter.service

[Unit]
Description=mysql Monitoring SystemDocumentation=mysql Monitoring System
[Service]
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
--collect.info_schema.processlist \
--collect.info_schema.innodb_tablespaces \
--collect.info_schema.innodb_metrics \
--collect.perf_schema.tableiowaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tablelocks \
--collect.engine_innodb_status \
--collect.perf_schema.file_events \
--collect.binlog_size \
--collect.info_schema.clientstats \
--collect.perf_schema.eventswaits \
--config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
[Install]
WantedBy=multi-user.target

.my.cnf配置文件:
vim /usr/local/mysqld_exporter/.my.cnf

[client]
host=localhost
user=exporter
password=123456
socket=/tmp/mysql3306.sock

在这里插入图片描述

将mysql暴露给mysql_exporter
打开mysql:
mysql -S /tmp/mysql3306.sock
输入下列内容:
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'exporter'@'localhost' IDENTIFIED BY '123456';

刷新权限:
flush privileges;
退出mysql:
quit
到此为止,客户端数据库配置完毕,启动mysqld_exporter并设置开机自启
systemctl start mysqld_exporter
systemctl enable mysqld_exporter

在这里插入图片描述
接下来安装node_exporter 这个前面也有,为了节省大家时间,我这里带大家再走一遍

安装node_exporter,创造软连接,配置service文件,修改prometheus.yml文件,添加监控端口:
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/node_exporter-1.3.1.linux-amd64/ /usr/local/node_exporter
vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=Prometheus node_exporter
[Service]
User=nobody
ExecStart=/usr/local/node_exporter/node_exporter --log.level=error
ExecStop=/usr/bin/killall node_exporter
[Install]
WantedBy=default.target

systemctl start node_exporter
systemctl enable node_exporter
systemctl status node_exporter

在这里插入图片描述

这个时候注意:需要回到prometheus安装的主机,去配置prometheus.yml文件,在里面添加监听此台主机的地址端口,现在打开192.168.251.120主机,去配置文件
这是打开的原prometheus.yml文件最后面的内容

在这里插入图片描述

vim /usr/local/prometheus/prometheus.yml 

添加如下内容:
在host_monitor的target中添加下面地址端口,监听node_exporter:
192.168.251.121:9100
在mysql_monitor的target中添加下面地址端口,监听mysqld_exporter:
192.168.251.121:9104
添加完之后如下图:

在这里插入图片描述

配置完检查一下语法,没有错就重启prometheus服务:
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
systemctl restart prometheus

在这里插入图片描述
这个时候再去prometheus网页中,注意,是192.168.251.120:9090,点击status,点击target可以看到监控到的主机参数,有主机信息,和mysql信息
在这里插入图片描述
回到grafana网页,网址:192.168.251.120:3000,可以看到mysql(模板7362)的数据和主机的数据(模板8919)
在这里插入图片描述
在这里插入图片描述
下面编写微信告警模板

修改告警模板,这个是在主机192.168.251.120上操作,因为alertmanager安装在这儿
tmpl文件是告警的模板,信息以什么样的形式呈现出来:
vim /usr/local/alertmanager/wechat.tmpl

{{ define "wechat.tmpl" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
@警报
实例: {{ .Labels.instance }}
信息: {{ .Annotations.summary }}
详情: {{ .Annotations.description }}
时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
@恢复
实例: {{ .Labels.instance }}
信息: {{ .Annotations.summary }}
时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
恢复: {{ .EndsAt.Format "2006-01-02 15:04:05" }}
{{ end }}{{ end -}}
{{- end }}

检查语法有没有问题:
./amtool check-config alertmanager.yml
重启alertmanager服务,修改配置文件,需要重启相关服务
systemctl restart alertmanager

在这里插入图片描述
进入prometheus文件包下的rules目录,添加mysql告警规则文件

mysql的监控规则:
vim /usr/local/prometheus/rules/mysql.yml

groups:
- name: MySQL-rules
  rules:
  - alert: MySQL Status
    expr: mysql_up == 0
    for: 5s
    labels:
      severity: 'warning'
    annotations:
      summary: "{{$labels.instance}}: MySQL has stop "
      description: "MySQL 数据库挂了,请检查"

  - alert: MySQL Slave IO Thread Status
    expr: mysql_slave_status_slave_io_running == 0
    for: 5s
    labels:
      severity: 'warning'
    annotations:
      summary: "{{$labels.instance}}: MySQL Slave IO Thread has stop "
      description: "检测 MySQL 主从 IO 线程运行状态"

  - alert: MySQL Slave SQL Thread Status
    expr: mysql_slave_status_slave_sql_running == 0
    for: 5s
    labels:
      severity: 'warning'
    annotations:
      summary: "{{$labels.instance}}: MySQL Slave SQL Thread has stop "
      description: "检测 MySQL 主从 SQL 线程运行状态"

保存并检查语法错误:
./promtool check config prometheus.yml
重启prometheus服务
systemctl restart prometheus

在这里插入图片描述
到此为止,监控告警基本完成,下面进行最后一步,将两台主机分别设置为mysql主库和mysql从库

九、设置mysql主库、从库

我们设置192.168.251.121为主库,192.168.251.120为从库,现在进入主库主机

打开mysql
mysql -S /tmp/mysql3306.sock
输入下面的语句,设置主库
grant replication slave on *.* to repl@'192.168.251.%' identified by '123456';
去从库:192.168.251.120主机:打开mysql
mysql -S /tmp/mysql3306.sock
输入下列命令,这里整段赋值,整段粘贴:
CHANGE MASTER TO MASTER_HOST='192.168.251.121',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

在这里插入图片描述

在这里插入图片描述
在主库继续输入:

start slave;
show slave status\G
可以看到两个指标,都是yes,说明主从库设置成功

在这里插入图片描述
在这里插入图片描述
此时全部监控告警体系搭建完毕,
进入prometheus网页:192.168.251.120:9090
可以看到在Alert页面下监控到的mysql指标和主机指标
在这里插入图片描述
去grafana网页:192.168.251.120:3000,点击加号,import,加载7371模板,选择prometheus数据源,可以看到如下页面,说明主库从库配置成功
在这里插入图片描述

我们做一个测试,打开企业微信,打开126邮箱,然后进入主机192.168.251.120的mysql环境下,输入指令:

stop slave sql_thread;

很快看到prometheus网页中Alert下的sql线程监控报错,企业微信收到告警,与此同时,因为在mysql.yml告警规则文件中,这三个监控指标的安全级别都是warning,而我在alertmanager.yml文件中设置凡是warning级别只发微信,如果是critical级别,会发邮件。所以此时邮件收不到告警。在这里插入图片描述在这里插入图片描述
下面我们再关掉一个线程

stop slave io_thread;

在这里插入图片描述
这是prometheus页面可以看到挂了两个线程,
在这里插入图片描述
grafana页面也显示挂掉了
在这里插入图片描述
企业微信开始疯狂发告警信息给我
在这里插入图片描述
好了,我们现在挂掉mysql服务和node_exporter服务,感受怒火吧!!!
在这里插入图片描述
prometheus页面显示了两个挂了
在这里插入图片描述
grafana页面也显示192.168.251.120的node_exporter挂掉
在这里插入图片描述
这个时候邮件来了!(因为我在host_monitor.yml告警规则里设置的告警级别是:critical)所以发邮件
host_monitor.yml
在这里插入图片描述
好了,我们逐步恢复刚才的哪些关掉的服务,恢复邮件和企业微信信息也会发回来,是因为在alertmanager.yml里面有一个参数:send_resolved: true,这里是TRUE,所以恢复的时候也会返回信息,我这里不上图了。。。

祝大家学业有成,身体健康!!!

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值