大家好,又见面了,我是你们的朋友全栈君。
目录
5、在mysqld_exporter 组件中配置msyql 信息
AAA公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行为业务监控,责成运维部门来实施这个项目。
任务要求:
为什么要监控?
实时收集数据,通过报警及时发现问题 ,及时处理。数据为优化也可以提供依据。
监控四要素:
项目选型:
综合分析:Prometheus比较适合公司的监控需求
Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。https://prometheus.io/docs/introduction/overview/
1、什么是序列数据 时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。应用的场景很多, 如:
2、时间序列数据特点
关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。
高效的压缩算法,节省存储空间,有效降低IO,Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)
3、Prometheus的主要特征
4、普罗米修斯原理架构图
序号 | 服务器IP | 角色 |
---|---|---|
1 | node-01 (172.20.10.7) | 被监控服务器 |
2 | node-02 (172.20.10.8) | Prometheus 服务器 |
3 | node-03 (172.20.10.9) | grafana 服务器 |
1. 静态ip(要求能上外网)【三台服务器都要操作】 2. 主机名【三台服务器都要操作】: vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## BigData CDH 5.x
172.20.10.7 node-01.bigdata.com node-01
172.20.10.8 node-02.bigdata.com node-02
172.20.10.9 node-03.bigdata.com node-03
3. 时间同步(时间同步一定要确认一下)【三台服务器都要操作】
# crontab -e
# .------------------------------------------minute(0~59)
# | .----------------------------------------hours(0~23)
# | | .--------------------------------------day of month(1~31)
# | | | .------------------------------------month(1~12)
# | | | | .----------------------------------day of week(0~6)
# | | | | | .--------------------------------command
# | | | | | |
# | | | | | |
*/1 * * * * /usr/sbin/ntpdate cn.pool.ntp.org
4. 关闭防火墙
systemctl stop firewalld (当前开机状态生效)
systemctl disable firewalld (永久生效,重启才生效)
systemctl status firewalld
5. SELINUX关闭
setenforce 0 (当前开机状态生效)
vi /etc/selinux/config (SELINUX=disabled) (永久生效,重启生效)
从 https://prometheus.io/download/ 下载相应版本,安装到服务器上官网提供的是二进制版,解压就能用,不需要编译
第一步:上传软件prometheus-2.5.0.linux-amd64.tar.gz 到Linux服务器目录下:/home/tools
第二步:解压软件:tar -zxvf /home/tools/prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local/
第三步:创建prometheus软链接:ln -s /usr/local/prometheus-2.5.0.linux-amd64 /usr/local/prometheus
第四步:启动普罗米修斯软件
直接使用默认配置文件启动
[root@server ~]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
注: &连接符代表后台运行,不占用终端窗口
第五步:测试端口占用情况(判断是否真正的启动了)
如果没有安装的话:yum install lsof [root@server ~]# lsof -i:9090 或 ss -naltp | grep 9090
ss -naltp | grep 9090
通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090
默认只监控了本机一台,点Status –》点Targets –》可以看到只监控了本机
通过http://服务器IP:9090/metrics可以查看到监控的数据
在web主界面可以通过关键字查询监控项
在远程linux 主机(被监控端agent)上安装node_exporter组件(这样普罗米修斯就可以接收到其收集系统)。
下载地址:https://prometheus.io/download/
第一步:上传软件包到Linux 服务器中(Agent 被监控端)node-01服务器中:node_exporter-0.16.0.linux-amd64.tar.gz
第二步:解压安装node_exporter 组件
tar -zxvf /home/tools/node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter
第三步:启动node_exporter组件
里面就一个启动命令node_exporter,可以直接使用此命令启动
ls /usr/local/node_exporter/
LICENSE node_exporter NOTICE
启动指令,&代表后台运行,nohup代表永久运行
nohup /usr/local/node_exporter/node_exporter &
扩展: nohup命令: 如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题。
第四步:查看9100 端口占用情况
ss -naltp | grep 9100
第五步:使用http 协议 + 9100 端口收集Linux 主机信息
通过浏览器访问 http://被监控端IP:9100/metrics 就可以查看到node_exporte在被监控端收集的监控信息。即:http://node-01:9100/metrics
回到prometheus服务器的配置文件里添加被监控机器的配置段
在主配置文件最后加上下面三行
vi /usr/local/prometheus/prometheus.yml
具体配置如下:文件的最后添加内容
- job_name: 'node-01_agent1' # 取一个job名称来代 表被监控的机器
static_configs:
- targets: ['172.20.10.7:9100'] # 这里改成被监控机器 的IP,后面端口接9100
设置完成后,保存,然后重新启动Prometheus 普罗米修斯监控系统
改完配置文件后,重启服务
[root@node-02 prometheus]# pkill prometheus
[root@node-02 prometheus]# lsof -i:9090
# 确认端口没有进程占 用
[root@node-02 prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
[root@node-02 prometheus]# lsof -i:9090 # 确认端口被占用,说明重启成功
或
[root@node-02 prometheus]# ss -naltp | grep 9090
回到web 管理界面 –》点Status –》 点Targets –》可以看到多了一台监控目标
通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090
在node_exporter 的基础上,可以根据自己的需要收集其他信息
下载地址:https://prometheus.io/download/
第一步:上传组件到Linux 服务器
第二步:解压与安装mysqld组件
tar -zxvf /home/tools/mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/mysqld_exporter-0.11.0.linux-amd64 /usr/local/mysqld_exporter
[root@node-01 local]# ls /usr/local/mysqld_exporter
LICENSE mysqld_exporter NOTICE
安装过程。这里不要误解哈,因为之前node-01节点上已经安装了社区版本的mysql服务,所以想直接使用。但发现还不是很满意,所以又在node-03上安装了mariadb
安装mariadb数据库,并授权
[root@node-03 ~]# yum install mariadb\* -y
[root@node-03 ~]# systemctl restart mariadb
[root@node-03 ~]# systemctl enable mariadb
[root@node-03 ~]# mysql
这个过程比较简单【跳过】:ss -naltp | grep 3306
mysql -u root -p aa_bb_CC1234
grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by 'aa_bb_CC1234';
flush privileges;
quit
这个文件是手工创建
创建一个mysql 配置文件,写上连接的用户名与密码(和上面的授权的用户名
和密码要对应)
[root@node-01 mysqld_exporter]# vi /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=aa_bb_CC1234
启动mysqld_exporter
[root@node-01 ~]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
确认端口(9104)
[root@node-01 ~]# ss -naltp | grep 9104
回到prometheus服务器的配置文件里添加被监控机器的配置段
在主配置文件最后加上下面三行
vi /usr/local/prometheus/prometheus.yml
具体配置如下:文件的最后添加内容
- job_name: 'mysql_agent' # 取一个job名称来代 表被监控的机器
static_configs:
- targets: ['172.20.10.7:9104'] # 这里改成被监控机器 的IP,后面端口接9100
设置完成后,保存,然后重新启动Prometheus 普罗米修斯监控系统
改完配置文件后,重启服务
[root@node-02 prometheus]# pkill prometheus
[root@node-02 prometheus]# lsof -i:9090
# 确认端口没有进程占 用
[root@node-02 prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
[root@node-02 prometheus]# lsof -i:9090 # 确认端口被占用,说明重启成功
或
[root@node-02 prometheus]# ss -naltp | grep 9090
回到web 管理界面 –》点Status –》 点Targets –》可以看到多了一台监控目标
通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面。即: http://node-02:9090
Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
它是开源的时序数据分析平台 目前支持52种数据源,其中promethus 就是其中支持的一种
下载地址:https://grafana.com/grafana/download
我这里选择的rpm包,下载后直接rpm -ivh安装就OK
[root@node-03 ~]# rpm -ivh /home/tools/grafana-5.3.4-1.x86_64.rpm
或
yum install grafana-5.3.4-1.x86_64.rpm -y
启动服务
[root@node-03 ~]# systemctl start grafana-server
设置开机自启动
[root@node-03 ~]# systemctl enable grafana-server
确认端口(3000)
[root@node-03 ~]# ss -naltp | grep 3000
默认的账号与密码:admin。首次登录后,需要对admin的密码进行更改,如:123456
第一步:添加数据源
第二步:设置数据源、数据源名称、类型、IP地址、端口号…
第一步:点击加号,选择Dashboard
第二步:增加一个图形
第三步:选择需要呈现图形的数据(小三角 =》Edit 编辑)
第四步:选择DataSource 数据源,选择普罗米修斯
第五步:可以把我们设计完的图形保存起来
扩展,第六步:根据条件帅选我们想要的数据
在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)
参考网址: https://github.com/percona/grafana-dashboards
在grafana配置文件里最后加上以下三行
[root@node-03 ~]# vi /etc/grafana/grafana.ini
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
[root@node-03 ~]# cd /var/lib/grafana/
[root@node-03 grafana]# git clone https://github.com/percona/grafana-dashboards.git
[root@grafana grafana]# cp -r grafanadashboards/dashboards/ /var/lib/grafana/
如果网速过慢,可以先通过windows下载好再上传至服务器
mkdir /var/lib/grafana/dashboards
然后下载好的dashboars目录下的.json文件全部上传至 /var/lib/grafana/dashboards
重启grafana服务
[root@node-03 grafana]# systemctl restart grafana-server
选择上传MySQL_Overview.json,设置完成后,单点Import
点import导入后,报prometheus数据源找不到,因为这些json文件里默认要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫 prometheus_data(坑啊
那么请自行把原来的prometheus_data源改名为Prometheus即可(注意:第一个字母P是大写)。然后再回去刷新,就有数据了(如下图所示)
https://caweb.aiops.com/#/integrate,需要先在这个系统中进行注册一个账号。然后登录。
第一步:在Grafana中创建Notification channel,选择类型为Webhook;
第三步:将配置的Webhook Notification Channel添加到Grafana Alert中
设置告警内容:发送给运维负责人
CPU负载测试
cat /dev/urandom | md5sum
测试告警情况:
测试结果:
告警后,邮箱收到报警邮件
如果告警消除后,也会收到一封告警消除的邮件。
同时,使用手机扫描二维码,也可以详细了解告警信息。
文章最后,给大家推荐一些受欢迎的技术博客链接:
欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161736.html原文链接:https://javaforall.cn