部署Prometheus+Grafana简介、监控及设置告警(一)
部署Prometheus+Grafana简介、监控及设置告警
一. 环境准备
服务器类型 | IP地址 | 组件 |
Prometheus服务器、agent服务器、Grafana服务器 | 192.168.213.7 | Prometheus 、node_expprter,Grafana |
agent服务器 | 192.168.213.8 | node_exporter |
如果有防火请记得开启9090(Prometheus)、9100(Exporters)\3000(Grafana)
二. 部署Prometheus(普罗米修斯)
1.Promethus简介
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),基于Go语言开发,是Google BorgMon监控系统的开源版本。Prometheus在2016年加入了云原生计算基金会,成为继Kubernetes之后的第二个项目。
从目标系统中拉取指标数据并存储在本地数据库中。这些指标数据可以用于生成图表、警报和报告,以帮助用户了解他们系统的运作状况和性能表现。
Prometheus通过多种数学算法能实现强大的监控需求,原生支持K8S服务发现,能监控容器的动态变化。并且结合Grafana能绘出漂亮 图形,然后使用alertmanager或Grafana实现报警。它与其他监控相比有以下主要优势:
- 数据格式是Key/Value形式,简单、速度快;采用多维数据模型(由指标名称和键/值维集定义的timeseries)
- timeseries收集是通过HTTP上的拉取(pull mode)模型进行,通过中间网关支持timeseries的推送,通过服务发现或静态配置来发现目标,监控数据的精细程度可达到秒级(数据采集精度高情况下,对磁盘消耗大,存在性能瓶颈,且不支持集群,但可以通过联邦能力进行扩展)
- 不依赖分布式存储,数据直接保存在本地,单节点是自治的,可独立运行管理,可以不需要额外的数据库配置。但是如果对历史数据 有较高要求,可以结合OpenTSDB;支持分层和水平联合。
- 周边插件丰富,如果对监控要求不是特别严格的话,默认的几个成品插件已经足够使用;支持多种图形和仪表板
- 本身基于数学计算模型,有大量的函数可用,可以实现很复杂的监控(故学习成本高,需要有一定数学思维,独有的数学命令行很难 入门)
- 可以嵌入很多开源工具的内部去进行监控,数据更可信。
- 使用PromQL,它是一种强大而灵活的查询语言,PromQL作为Prometheus强大的查询语言,可以灵活地处理监视数据。
Prometheus最初是由SoundCloud开发的,现在已经成为了Cloud Native Computing Foundation(CNCF)旗下的一个项目。它有很多优点,包括易于安装和配置、支持动态发现、具有高可用性和灵活的查询语言等。此外,Prometheus集成了一个强大的警报系统,可以根据用户自定义的规则 进行警报通知,并支持多种通知方式,如Email、Slack和PagerDuty等。
在现代应用程序和微服务架构的时代,Prometheus已经成为了一个被广泛采用的监控解决方案。
【Prometheus的3大局限性】
2.prometheus部署
下载地址:https://prometheus.io/download/
2.1下载安装包(两种方式)
2.1.1直接在官网下载
访问下载官网:https://prometheus.io/download/
选择版本,在哪部署选择哪个哪个,本文在linux上部署,所以,选择linux的tar包;
点击,等待下载完成,上传到服务器中;
2.1.2 服务器上直接使用wget下载
也是同样的先打开官网:找到自己要下载的版本;右击点击复制链接;
直接把包传上去
2.2 解压安装包并放到指定目录
#解压安装包 [root@localhost ~]# tar xf prometheus-3.3.0-rc.0.linux-amd64.tar.gz #移动到/usr/local/目录,并修改名字 [root@localhost ~]# mv prometheus-3.3.0-rc.0.linux-amd64 /usr/local/prometheus |
2.3修改Prometheus配置文件
#进入Prometheus目录 root@localhost ~]# cd /usr/local/prometheus/ #备份配置文件 [root@localhost prometheus]# cp -ar prometheus.yml prometheus.yml-bak #修改配置文件 ## 第六行添加 scrape_timeout: 10s ## 找到下面这行localhost改为本机的IP(其实不改也可以,为了分辨,建议修改) - targets: ["192.168.213.5:9090"] |
修改两处
2.4 配置系统文件启动文件,设置开机自启(两种方式:推荐第一种)
2.4.1第一种:配置系统启动文件,设置开机自启
#进入这个文件,默认是没有的,直接进入就行 [root@localhost ~]# vi /usr/lib/systemd/system/prometheus.service #将下面的全部写进去 [Unit] Description=Prometheus Server Documentation=https://prometheus.io After=network.target [Service] Type=simple ExecStart=/usr/local/prometheus/prometheus \ --config.file=/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path=/usr/local/prometheus/data/ \ --storage.tsdb.retention=15d \ --web.enable-lifecycle ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target |
#启动 [root@localhost ~]# systemctl restart prometheus #设置开机自启 [root@localhost ~]# systemctl enable prometheus #查看端口是否启动9090 [root@localhost prometheus]# netstat -anput | grep 9090 |
2.4.2 第二种:进入解压目录,挂后台执行./prometheus
#进入解压目录 [root@localhost ~]# cd /usr/local/prometheus #挂后台执行./prometheus [root@localhost prometheus]# ./prometheus & #查看端口是否启动 [root@localhost prometheus]# netstat -anput | grep 9090 |
2.5 页面访问
浏览器访问:http://192.168.213.5:9090,访问到Prometheus的Web UI页面 点击页面的Status ->Target,如看到Target状态都为UP,说明Prometheus能正常采集到数据 http://192.168.213.5:9090/metrc,可以看到Prometheus采集到自己得指标数据 |
点击这个红色框内可以查看监控数据
点击graph可以查看折线图
add可添加多个要监控得这折线图
2.6 服务端安装完成
至此,Prometheus 服务端安装完成
三. 部署Exporters(普罗米修斯客户端)
Exporters远程监控linux主机,也就是普罗米修斯客户端 |
1.Exporters部署
在远程linux主机(客户端agent)上安装node_exporter组件。
下载地址: https://prometheus.io/download/
1.1下载按安装包(两种方式)
1.1.1直接在官网下载
访问下载官网:https://prometheus.io/download/
可以ctrl+f搜索node_exporter
同样也是下载linux版本;点击,等待下载完成,上传到服务器中;
1.1.2服务器上直接使用wget下载
也是同样的先打开官网:找到自己要下载的版本;右击点击复制连接;
在服务器上使用wget下载
[root@localhost ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz |
等待下载完成之后。
1.2 解压安装包并放到指定目录
#解压安装包 [root@localhost ~]# tar xf node_exporter-1.9.1.linux-amd64.tar.gz #移动到/usr/local/目录,并修改名字(名字可自行修改,只要记住这个文件夹是干什么得就行) [root@localhost ~]# mv node_exporter-1.9.1.linux-amd64 /usr/local/prometheus_node |
1.3配置系统启动文件,设置开机自启(两种方式:推荐第一种)
1.3.1第一种:配置系统启动文件,启动并设置开机自启
#进入这个文件,默认是没有得,直接进入就行 [root@localhost ~]# vi /usr/lib/systemd/system/node_exporter.service #将下面得全部写进去 #启动 [root@localhost ~]# systemctl restart node_exporter #设置开机自启 [root@localhost ~]# systemctl enable node_exporter #查看端口是否启动9100 [root@localhost ~]# netstat -anput | grep 9100 |
1.3.2 第二种进入解压目录,挂后台执行./node_exporter
#进入解压目录 [root@localhost ~]# cd /usr/local/prometheus_node #挂后台执行 [root@localhost ~]# ./node_exporter & #查看端口是否启动 [root@localhost ~]# netstat -anput | grep 9100 |
也是可以启动的,但是不好的是,不能设置开机自启,如果想要开机自启,还需要手动写一个启动服务器去执行他的 命令或者周期性计划任务,所以不推荐使用方法二
1.4页面访问
浏览器访问IP:192.168.213.6:9100
点击Metrics可以查看node_exporter 在被监控端收集得监控信息:
1.5客户端安装完成
回到Prometheus服务端得配置文件里添加被监控机器得配置段
2.修改Prometheus服务端的配置文件里添加被监控机器的配置端
2.1添加客户端到服务端(分为添加单个客户端与多个客户端两部分)
2.1.1添加单个客户端
#进入prometheus的配置文件中 [root@localhost ~]# vi /usr/local/prometheus/prometheus.yml #添加以下几行,到最后(格式和上面的服务端一样,因为yml文件格式要求严格,所以必须一样,否则启动会报错) |
2.1.2 添加多个客户端
给服务端也安装一个客户端,添加到服务端
添加方式一:使用多个命名来命名客户端的作用
- job_name: 'agent1' static_configs: - targets: ["192.168.213.6:9100"] - job_name: "agent2" static_configs: - targets: ["192.168.213.6:9100"] |
2.2重启服务器
[root@localhost ~]# systemctl restart prometheus |
等待重启完成,刷新一下页面,如果还是没有可以清除一下缓存,试试。
如果重启还不好使
注意:这里的重启不报错不代表重启成功
把下面这段插进去
[root@localhost ~]# sudo vi /usr/lib/systemd/system/prometheus.service [Unit] Description=prometheus Documentation=prometheus After=network.target [Service] User=root WorkingDirector=/root/prometheus ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target |
3.附加(服务端配置文件)
3.1监测prometheus配置文件是否正确
[root@localhost ~]# cd /usr/local/prometheus/ [root@localhost prometheus]# ./promtool check config prometheus.yml Checking prometheus.yml SUCCESS: prometheus.yml is valid prometheus config file syntax |
4.实例:监控远程MySQL服务
在被客户端agent上安装mysql_exporter组件
下载地址:Download | Prometheus
4.1下载安装包(两种方式)
4.1.1直接在官网下载
访问下载官网:Download | Prometheus
选择要下载的版本
同样也是下载linux版本;点击,等待下载完成,上传到服务器中;
4.1.2 服务器上直接使用wget下载
也是同样的先打开官网:找到自己要下载的版本;右击点击复制连接;
在服务器上使用wget下载
[root@localhost ~]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-amd64.tar.gz |
等待下载完成之后,
4.2解压安装包并放到指定目录
#解压安装包并放到/usr/local/下 [root@localhost ~]# tar xf mysqld_exporter-0.17.2.linux-amd64.tar.gz #进入/usr/local/下给重命名为:mysql_exporter [root@localhost ~]# mv mysqld_exporter-0.17.2.linux-amd64/ mysqld_exporter |
4.3安装mysql数据库,并授权
4.3.1安装mysql数据库并进行用户授权
第一种:新安装mariadb开始
#安装mariadb [root@localhost ~]# yum install mariadb\* -y #启动数据库 [root@localhost ~]# systemctl start mariadb #设置开机自启 [root@localhost ~]# systemctl enable mariadb #查看数据库是否启动(有进程则启动) [root@localhost ~]# netstat -anput | grep 3306 #数据库初始化操作(设置密码) |
第一步回车,在设置密码下面,一路y
#进入mysql数据库 [root@localhost ~]# mysql -uroot -p123456 #创建mysql_exporter用户并设置密码 MariaDB [(none)]> create user 'mysql_exporter'@'localhost' identified by '123456'; #给mysql_exporter查询权限 MariaDB [(none)]> grant select,replication client,process on *.* to 'mysql_exporter'@'localhost'; #刷新权限 MariaDB [(none)]> flush privileges; |
4.4创建一个mysqld_exporter配置文件
创建一个mysqld_exporter配置文件,写上连接的用户名和密码(和上面的授权的用户名和密码要对应) [root@localhost ~]# cat /usr/local/mysqld_exporter/.my.cnf [client] user=mysql_exporter password=123456 |
4.5配置系统启动文件,设置开机自启(两种方式:推荐第二种)
4.5.1第一种:配置系统启动文件,启动并设置开机自启
#进入这个文件,默认是没有的,直接进入就行 [root@localhost ~]# vi /usr/lib/systemd/system/mysqld_exporter.service #将下面的全部写进去 [Unit] Description=mysqld_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \ --collector.ntp \ --collector.mountstats \ --collector.systemd \ --collector.tcpstat ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target |
四,部署Grafana(可视化)
1.Grafana简介
Grafana 是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
Grafana是一个开源的数据可视化工具,它可以拉取各种不同的数据源并将它们呈现为漂亮而易于理解的图表。 Grafana可以用于监控和分析各种服务和应用程序的性能和状况,包括数据库、Web服务器、应用程序服务器等。Grafana具有可扩展性,可以支持许多不同的数据源和可视化库, 例如Graphite、InfluxDB、Prometheus、Elasticsearch等。同时,Grafana还提供了丰富的插件和面板,帮助用户更好地理解和管理数据。
随着公司业务的不断发展,紧接来的是业务种类的增加、服务器数量的增长、网络环境的越发复杂以及发布更加频繁,从而不可避免 地带来了线上事故的增多,因此需要对服务器到应用的全方位监控,提前预警,急需一个工具来解决这个问题,而Grafana的出现完美的解决了这个问题。
主要特点
1.1.grafana提供了快速灵活的可视化效果,可以让自己以任何想要的方式来可视化数据
1.2.支持众多插件,使用Grafana插件可以连接自己的工具和团队,数据源插件通过API挂接到现有数据源中,实时呈现数据,而无需迁移或引入数据。
1.3.告警系统,可以在一个简单的UI中创建,管理所有警报从而轻松整合和集中所有警报。
2.Grafana部署/下载
官网下载地址:Download Grafana | Grafana Labs
进入官网直接下载最新版本就行
2.1下载安装包
2.2启动grafana并设置开机自启
#启动grafana-server服务 systemctl start grafana-server #设置开机自启 systemctl enable grafana-server #查看端口(默认为3000) netstat -natp | grep 3000 |
2.3页面访问
IP:192.168.213.5:3000 注意:默认账号密码为: 账号:admin 密码:admin grafana默认配置文件目录/etc/grafana/grafana.ini 进去还需要设置一个新密码 |
2.4配置数据源
下面我们把Prometheus服务器收集的数据做为一个数据源添加到Grafana,让Grafana可以得到Prometheus的数据。
选择 Prometheus
点击保存测试
2.5导入模板
可以看到我们刚刚创建的
点进去,选择:Dashboards->从中选择任意一个模板,这里我选择第二个。点击import
安装成功
然后点击名称,进入可以查看模板
这里可以看到了,但是他只是个模板,不能显示出来,接下来,我们将自己做数据源将数据展示出来。
2.6为数据源做自定义数据展示
点击右上角的加号,再点击创建新的仪表盘
选择刚刚添加的监控项
选择load1、load5、load1;一分钟
五分钟、十五分钟负载
点击下方红框可以测试,直接在上面显示
这里写了三个条件
点击保存
自定义名称、点击保存;
最后在dashboard可以查看到 。