文章目录
安装部署
基础环境
操作系统: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服务详情信息发现其格式有误,这里真的很难发现问题。
图片中的错误信息为: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服务就没有问题了。
具体格式如下,红框内缩进格式一定要保持一致:
-
-
查看prometheus运行状态
systemctl status prometheus.service
-
Prometheus自带有简单的UI, http://ip:9090/targets
如果访问不了,且使用的是阿里云服务器,请到阿里云控制台安全组开放9090端口,开启9090端口后访问结果如下:
安装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
如果访问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
如果访问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
如果访问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直接运行查看一下错误原因
安装配置成果:
安装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
-
登录grafana图形化界面
-
访问grafana网页: http://ip:3000/login ,默认用户名“admin”默认密码“admin”,登录后重置密码。
-
如果访问http://ip:3000/login失败,且使用的是阿里云服务器,请到阿里云控制台安全组开放3000端口。
不知道是我操作的问题还是其他原因,登录后修改密码提示未认证,修改密码后登录不跳转,我强制刷新之后又自动登录了,疑惑!
登录后界面:
-
配置grafana-node_exporter仪表版
- 添加data sources,点击添加选择prometheus即可
- Name默认Prometheus,URL填写上面配置的prometheus地址http://ip:9090,其他默认,保存即可
- 在Dashboards页面导入Prometheus Status模板,这里选择导入官网的模板
- 导入Prometheus仪表版,Dashboards–Manage–import
- 在 Granfana.com-Dashboard中填写8919,点击load即可。(https://grafana.com/dashboards 中可以直接搜索prometheus,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)
- 点击“import”,执行导入,效果如下
配置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没有添加好需要重新检查)
-
进入仪表板就可以在仪表版看到相应的监控
配置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没有添加好需要重新检查)
-
进入仪表板就可以在仪表版看到相应的监控(redis无密码)
安装Altermanager(Altermanager监控告警)
第一种:使用grafana自带的报警功能
- 配置钉钉报警通知
- 配置钉钉机器人
打开要通知的钉钉群->群设置->点击“智能群助手”
点击“添加机器人”
选择自定义:
点击“添加”按钮,输入机器人名称,选择安全设置后点击“完成”
注意,由于请求实现的原因,必须选择ip地址段,只有填写的IP地址请求才会被接受,否则后面的测试将不会收到消息,也就是说ip地址必须包含grafana安装的地址。
- grafana添加报警通知设置
警报发送的是一个URL地址,这里需要注意一下,需要修改为自己的grafana地址。
修改完成后,保存并退出,然后重启grafana服务:vim /etc/grafana/grafana.ini # 修改为自己grafana服务的访问地址 domain = 39.98.134.170 root_url = http://ip:3000
如果钉钉收不到报警消息,关闭发送图片开关试试。systemctl daemon-reload systemctl restart grafana-server
- 配置钉钉机器人
- 配置邮件报警通知
这里使用qq邮箱
登录qq账户,点击“设置”、“账户”,开启服务,开启邮件服务后,qq邮件服务端口是465:
同时,点击“生成授权码”,根据提示发送短信并在该页面获取授权码,复制下来以备使用:
修改grafana邮箱配置vim /usr/share/grafana/conf/grafana.ini
修改完成后,保存并退出,然后重启grafana服务:systemctl daemon-reload systemctl restart grafana-server
去grafana添加邮件报警
添加完成后,点击“send test”,就会接收到报警测试邮件:
- 配置企业微信报警通知
公司没有使用企业微信,这里暂留,以后用到再完善。
第二种:使用alertmanager软件报警通知
后期添加
参考资料:
https://blog.csdn.net/baidu_36943075/article/details/91829364
https://blog.csdn.net/yaodunlin/article/details/89159500
https://blog.csdn.net/xiegh2014/article/details/84936174