文章目录


安装部署

基础环境

操作系统:CentOS 7.7

MySQL:5.7

安装go环境


  • 选择go安装包 ​​传送门​
  • 下载安装go,及环境配置
    确定要下载的go安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:
wget https://studygolang.com/dl/golang/go1.13.5.linux-amd64.tar.gz   #下载go安装包

tar -C /usr/local -zxvf go1.13.5.linux-amd64.tar.gz #解压到/usr/local目录下

vim /etc/profile #打开环境变量配置文件,末尾写入如下内容(位置根据实际的存放位置为准)

export GO_HOME=/usr/local/go
export PATH=$GO_HOME/bin:$PATH
#添加完成后:wq保存退出

source /etc/profile # 重启环境变量
go version #查看版本号验证是否安装成功


安装Prometheus



下载Prometheus安装包 ​​传送门​



下载安装Prometheus及环境配置
确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

mkdir -p /software/installs   #安装包安装目录,根据自己习惯设定
mkdir -p /software/pkgs #安装包存储目录,根据自己习惯设定

cd /software/pkgs
wget https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz #下载Prometheus安装包

#创建prometheus用户
groupadd prometheus
useradd -g prometheus prometheus -d /software/installs/prometheus

cd /software/pkgs
tar -zxvf prometheus-2.14.0.linux-amd64.tar.gz -C /software/installs/ #解压包至指定目录,根据自己习惯

mv /software/installs/prometheus-2.14.0.linux-amd64 /software/installs/prometheus
cd /software/installs/prometheus #进入解压后的文件
mkdir {data,cfg,logs,bin} -p
mv prometheus promtool bin/
mv prometheus.yml cfg/

chown -R prometheus.prometheus *

#设置环境变量
vim /etc/profile

#末尾加入如下内容
export PROMETHEUS_HOME=/software/installs/prometheus
export PATH=$PROMETHEUS_HOME/bin:$PATH
#添加后确认无误:wq保存并退出

source /etc/profile #重新加载环境变量


创建prometheus.service 的 systemd unit 文件

vim /etc/systemd/system/prometheus.service

#加入如下内容
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/bin/prometheus --config.file=/software/installs/prometheus/cfg/prometheus.yml --storage.tsdb.path=/software/installs/prometheus/data #这里是重点,注意每个目录与上面保持一致
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且检查无误后:wq保存并退出


prometheus.yml配置文件

#末尾处加入如下内容
labels:
instance: prometheus
- job_name: node
static_configs:
- targets: ['localhost:9100'] #博主的node_exporter安装在本地,如果安装在其他机器使用IP即可,9100是node_exporter的端口号
labels:
instance: server1 #名称,根据自己爱好取就行了

- job_name: mysql
static_configs:
- targets: ['localhost:9104'] #博主的mysqld_exporter安装在本地,如果安装在其他机器使用IP即可,9104是mysqld_exporter的端口号
labels:
instance: db1 #名称,根据自己爱好取就行了

- job_name: redis
static_configs:
- targets: ['localhost:9121'] #博主的redis_exporter安装在本地,如果安装在其他机器使用IP即可,9121是redis_exporter的端口号
labels:
instance: redis1 #名称,根据自己爱好取就行了
#添加完成后:wq保存退出


启动prometheus服务

systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service

这里遇到了重启失败的情况,经过多次尝试终于找到问题,由于是yml格式,对缩进格式要求非常严格,要保证添加的配置-job_name和原来已有的保持同级,处理过程为:



检查prometheus.service文件配置目录是否正确,确认没有问题



执行​​prometheus --config.file=/software/installs/prometheus/cfg/prometheus.yml​​后看到启动prometheus服务详情信息发现其格式有误,这里真的很难发现问题。
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警
图片中的错误信息为:


level=error ts=2019-12-20T07:22:15.646Z caller=main.go:736 err=“error loading config from “/software/installs/prometheus/cfg/prometheus.yml”: couldn’t load configuration (–config.file=”/software/installs/prometheus/cfg/prometheus.yml"): parsing YAML file /software/installs/prometheus/cfg/prometheus.yml: yaml: line 40: did not find expected key"


格式问题处理完成后,再使用上述命令重启prometheus服务就没有问题了。
具体格式如下,红框内缩进格式一定要保持一致:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_02





查看prometheus运行状态

systemctl status prometheus.service

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_邮件告警_03



Prometheus自带有简单的UI, http://ip:9090/targets
如果访问不了,且使用的是阿里云服务器,请到阿里云控制台安全组开放9090端口,开启9090端口后访问结果如下:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_钉钉告警_04



安装node_exporter



node_exporter也是需要go的环境,安装在被监控的设备上(本文是都安装在同一台机器)



下载node_exporter安装包 ​​传送门​



下载安装node_exporter及环境配置
确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

cd /software/pkgs
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

#解压到prometheus目录下
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /software/installs/prometheus/

mv /software/installs/prometheus/node_exporter-0.18.1.linux-amd64 /software/installs/prometheus/node_exporter #重命名
cd /software/installs/prometheus/node_exporter #进入解压后的文件
mkdir bin -p
mv node_exporter bin/

chown -R prometheus.prometheus /software/installs/prometheus/node_exporter #改变node_exporter所属用户及用户组

#设置环境变量
vim /etc/profile

#末尾加入如下内容
export NODE_EXPORTER_HOME=/software/installs/prometheus/node_exporter
export PATH=$NODE_EXPORTER_HOME/bin:$PATH
#添加后确认无误:wq保存并退出

source /etc/profile #重新加载环境变量


创建node_exporter.service的 systemd unit 文件

vim /usr/lib/systemd/system/node_exporter.service

#加入如下内容
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/node_exporter/bin/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且检查无误后:wq保存并退出


启动node_exporter服务

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service


查看node_exporter运行状态

systemctl status node_exporter.service

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_05
如果访问http://ip:9090/targets看不到node服务节点,且使用的是阿里云服务器,请到阿里云控制台安全组开放9100端口。



注意事项
如果不想使用.service文件处理服务启动,或找不到添加启动服务文件的目录,可以使用如下方式启动并设置后台运行:

#启动服务并设置后台运行
cd /software/installs/prometheus/node_exporter /bin

nohup node_exporter & #启动node_pxporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆

ps -ef | grep mysqld_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


安装mysqld_exporter



mysqld_exporter也是需要go的环境,安装在被监控的设备上(本文是都安装在同一台机器)



下载mysqld_exporter安装包 ​​传送门​



下载安装mysqld_exporter及环境配置
确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

cd /software/pkgs

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
#解压到prometheus目录下
tar zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /software/installs/prometheus

mv /software/installs/prometheus/mysqld_exporter-0.12.1.linux-amd64 /software/installs/prometheus/mysqld_exporter #重命名
cd /software/installs/prometheus/mysqld_exporter #进入解压后的文件
mkdir {bin,cfg} -p
mv mysqld_exporter bin/

chown -R prometheus.prometheus /software/installs/prometheus/mysqld_exporter #改变mysqld_exporter所属用户及用户组

#设置环境变量
vim /etc/profile

#末尾加入如下内容
export MYSQLD_EXPORTER_HOME=/software/installs/prometheus/mysqld_exporter
export PATH=$MYSQLD_EXPORTER_HOME/bin:$PATH
#添加后确认无误:wq保存并退出

source /etc/profile #重新加载环境变量


创建mysqld_exporter.service的 systemd unit 文件

vim /usr/lib/systemd/system/mysqld_exporter.service

#加入如下内容
[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/mysqld_exporter/bin/mysqld_exporter --config.my-cnf=/software/installs/prometheus/mysqld_exporter/cfg/.my.cnf
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且检查无误后:wq保存并退出


添加mysqld_exporter服务的mysql用户
mysqld_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限。

mysql -uroot -p密码
mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'localhost' identified by 'mysql_monitor';
mysql> GRANT SELECT ON *.* TO 'mysql_monitor'@'localhost';


创建.my.cnf文件

vim /software/installs/prometheus/mysqld_exporter/cfg/.my.cnf

#加入如下内容
[client]
user=mysql_monitor
password=mysql_monitor
#添加完成后:wq保存并退出


启动mysqld_exporter服务

systemctl daemon-reload
systemctl enable mysqld_exporter.service
systemctl start mysqld_exporter.service


查看mysqld_exporter运行状态

systemctl status mysqld_exporter.service

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_06
如果访问http://ip:9090/targets看不到mysql服务节点,且使用的是阿里云服务器,请到阿里云控制台安全组开放9104端口。



注意事项
如果不想使用.service文件处理服务启动,或找不到添加启动服务文件的目录,可以使用如下方式启动并设置后台运行:

#启动服务并设置后台运行
cd /software/installs/prometheus/mysql_exporter/bin

nohup mysqld_exporter -config.my-cnf=../cfg/.my.cnf & ##启动mysqld_exporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆

ps -ef | grep mysqld_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


安装redis_exporter



下载redis_exporter安装包 ​​传送门​



下载安装redis_exporter及环境配置
确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

cd /software/pkgs

wget https://github.com/oliver006/redis_exporter/releases/download/v1.3.5/redis_exporter-v1.3.5.linux-amd64.tar.gz

#解压到prometheus目录下
tar zxvf redis_exporter-v1.3.5.linux-amd64.tar.gz -C /software/installs/prometheus/

mv /software/installs/prometheus/redis_exporter-v1.3.5.linux-amd64 /software/installs/prometheus/redis_exporter #重命名
cd /software/installs/prometheus/redis_exporter #进入解压后的文件
mkdir {bin,cfg} -p
mv redis_exporter bin/

chown -R prometheus.prometheus /software/installs/prometheus/redis_exporter #改变redis_exporter所属用户及用户组

#设置环境变量
vim /etc/profile

#末尾加入如下内容
export REDIS_EXPORTER_HOME=/software/installs/prometheus/redis_exporter
export PATH=$REDIS_EXPORTER_HOME/bin:$PATH
#添加后确认无误:wq保存并退出

source /etc/profile #重新加载环境变量


创建redis_exporter.service的 systemd unit 文件

vim /usr/lib/systemd/system/redis_exporter.service

#加入如下内容
[Unit]
Description=redis_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/installs/prometheus/redis_exporter/bin/redis_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
#完成且检查无误后:wq保存并退出


启动mysqld_exporter服务

systemctl daemon-reload
systemctl enable redis_exporter.service
systemctl start redis_exporter.service


查看mysqld_exporter运行状态

systemctl status redis_exporter.service

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_邮件告警_07
如果访问http://ip:9090/targets看不到redis服务节点,且使用的是阿里云服务器,请到阿里云控制台安全组开放9121端口。



注意事项
如果不想使用.service文件处理服务启动,或找不到添加启动服务文件的目录,可以使用如下方式启动并设置后台运行:

#启动服务并设置后台运行
cd /software/installs/prometheus/redis_exporter/bin

nohup ./redis_exporter exporter redis://localhost:6379 & #启动redis_exporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆

ps -ef | grep redis_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


安装配置成果:

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_08

安装Grafana



下载Grafana安装包 ​​传送门​



下载安装Grafana及环境配置
确定要下载的安装包后,右键复制链接地址,在终端使用wget进行下载,操作命令如下:

cd /software/pkgs

wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm

#安装grafana,无需指定安装目录,默认即可,否则可能会由于依赖等问题导致安装失败
yum localinstall grafana-6.5.2-1.x86_64.rpm


设置grafana服务开机自启动及开启服务

systemctl daemon-reload
systemctl enable grafana-server.service
systemctl start grafana-server.service


查看mysqld_exporter运行状态

systemctl status grafana-server.service

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_钉钉告警_09



登录grafana图形化界面



访问grafana网页: http://ip:3000/login ,默认用户名“admin”默认密码“admin”,登录后重置密码。



如果访问http://ip:3000/login失败,且使用的是阿里云服务器,请到阿里云控制台安全组开放3000端口。
不知道是我操作的问题还是其他原因,登录后修改密码提示未认证,修改密码后登录不跳转,我强制刷新之后又自动登录了,疑惑!



登录后界面:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_10



配置grafana-node_exporter仪表版


  • 添加data sources,点击添加选择prometheus即可
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_11
  • Name默认Prometheus,URL填写上面配置的prometheus地址http://ip:9090,其他默认,保存即可
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_12
  • 在Dashboards页面导入Prometheus Status模板,这里选择导入官网的模板
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_邮件告警_13
  • 导入Prometheus仪表版,Dashboards–Manage–import
  • 在 Granfana.com-Dashboard中填写8919,点击load即可。(https://grafana.com/dashboards 中可以直接搜索prometheus,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_钉钉告警_14
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_15
  • 点击“import”,执行导入,效果如下
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_16

配置grafana-mysqld_exporter仪表版



导入Prometheus仪表版,Dashboards–Manage–import。方式同上



在 Granfana.com-Dashboard中填写7362,点击load即可。(https://grafana.com/dashboards 中可以直接搜索MySQL Overview,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)。方式同上



修改仪表版名称和选择“prometheus”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_17
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_18



进入仪表板就可以在仪表版看到相应的监控
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_19



配置grafana-redis_exporter仪表版



导入Prometheus仪表版,Dashboards–Manage–import



在 Granfana.com-Dashboard中填写2751,点击load即可。(https://grafana.com/dashboards 中可以直接搜索Prometheus Redis,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)



修改仪表版名称和选择“prom”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_20
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_21



进入仪表板就可以在仪表版看到相应的监控(redis无密码)
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_22



安装Altermanager(Altermanager监控告警)

第一种:使用grafana自带的报警功能


  • 配置钉钉报警通知


  1. 配置钉钉机器人
    打开要通知的钉钉群->群设置->点击“智能群助手”
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_23
    点击“添加机器人”
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_24
    选择自定义:
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_邮件告警_25
    点击“添加”按钮,输入机器人名称,选择安全设置后点击“完成”
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_26
    注意,由于请求实现的原因,必须选择ip地址段,只有填写的IP地址请求才会被接受,否则后面的测试将不会收到消息,也就是说ip地址必须包含grafana安装的地址。
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_27
  2. grafana添加报警通知设置
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_28
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_29
    CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_邮件告警_30
    警报发送的是一个URL地址,这里需要注意一下,需要修改为自己的grafana地址。

vim /etc/grafana/grafana.ini
# 修改为自己grafana服务的访问地址
domain = 39.98.134.170
root_url = http://ip:3000
修改完成后,保存并退出,然后重启grafana服务:
systemctl daemon-reload
systemctl restart grafana-server
如果钉钉收不到报警消息,关闭发送图片开关试试。
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_31配置邮件报警通知
这里使用qq邮箱
登录qq账户,点击“设置”、“账户”,开启服务,开启邮件服务后,qq邮件服务端口是465:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_32
同时,点击“生成授权码”,根据提示发送短信并在该页面获取授权码,复制下来以备使用:
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_CentOS7监控告警_33
修改grafana邮箱配置
vim /usr/share/grafana/conf/grafana.ini
CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_钉钉告警_34
修改完成后,保存并退出,然后重启grafana服务:
systemctl daemon-reload
systemctl restart grafana-server


去grafana添加邮件报警

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_prometheus_35

添加完成后,点击“send test”,就会接收到报警测试邮件:

CentOS7+Prometheus+Grafana+Altermanager监控告警+钉钉通知+邮件推送_grafana_36

  • 配置企业微信报警通知
    公司没有使用企业微信,这里暂留,以后用到再完善。

第二种:使用alertmanager软件报警通知

后期添加