Prometheus和Grafana搭建简单的监控系统
你需要准备的
- 三台配置好的虚拟机(VMware)
- Prometheus安装包和exproter组件
- Grafana安装包和监控的JSON文件
- shell工具(这里使用Finalshell) 工具网址链接: Prometheus官网下载组件:https://prometheus.io/download/ Grafana官网:https://grafana.com/ 监控JSON文件:https://github.com/percona/grafana-dashboards
我们开始吧
一台虚拟机复制三份,修改配置文件
需要修改一下文档
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="none"
IPADDR=192.168.149.128
NETMASK=255.255.255.0
GATEWAY=192.168.149.2
DNS1=8.8.8.8
DNS2=144.144.144.144
UUID="a3304e37-dbb4-4486-8111-7f115a5615o5q" #UUID后三位需要改掉
systemctl restart network #重新加载一下配置
三台机器都是需要修改的哦
IP地址、主机名称、绑定、/etc/hosts文件、时间同步(非常重要)
hostname设置
# hostnamectl set-hostname agent.itcast.cn
# hostnamectl set-hostname prometheus.itcast.cn
# hostnamectl set-hostname grafana.itcast.cn
/etc/host文件
192.168.149.128 agent agent.itcast.cn
192.168.149.129 prometheus prometheus.itcast.cn
192.168.149.130 grafana grafana.itcast.cn
修改/etc/host文件 文件后添加以下内容
vim /etc/hosts
时间同步:
yum install ntpdate -y
ntpdate cn.ntp.org.cn
安装Prometheus软件
第一步:软件上传Linux服务器
第二步:解压和安装软件
#解压软件
tar xvfz prometheus-2.23.0.linux-amd64.tar.gz -C /usr/local
# 进入目录下
cd /usr/local
# 修改文件夹名字
mv prometheus-2.23.0.linux-amd64 prometheus
# 启动Prometheus
./prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
#注:&连接符代表后台运行,不占用终端窗口
查看端口占用情况。Prometheus占用说明启动成功
[root@localhost prometheus]# ss -naltp |grep 9090
LISTEN 0 128 [::]:9090 [::]:* users:(("prometheus",pid=50994,fd=9))
普罗米修斯软件界面(web)
通过浏览器访问http://服务器IP:9090就可以访问到Prometheus的主界面
现在本地就可以访问Prometheus的web界面啦 为什么访问不到界面呢? 但我们输入网址访问Prometheus时,网址一直没有打开。 原因是Linux服务器没有开通9090端口,我们只需要开通9090端口就可以访问啦 这个就是一个坑啦;一开始我也不知道为什么,后来想了一下,是Linux防火墙的原因。我们需要给Prometheus开通一个端口;如果配置了其他组件,也是需要开通端口的。开通的端口步骤如下:
#查看firewall服务状态
systemctl status firewalld
出现Active: active (running)切高亮显示则表示是启动状态。
# 开启
service firewalld start
# 关闭
service firewalld stop
# 查询端口是否开放
firewall-cmd --query-port=9090/tcp
# 开放9090端口
firewall-cmd --permanent --add-port=9090/tcp
# 移除端口
firewall-cmd --permanent --remove-port=9090/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
添加一个process_cpu_seconds_total就可以监控对应的组件啦
监控远程Linux主机
在远程Linux主机上安装node_exproter组件
1、node组件介绍
在远程Linux主机(被监控端agent)上安装node_exproter组件;这样Prometheus就可以接收到其收集系统。
第一步:上传软件安装包到Linux服务器中
第二步:解压安装node_exproter组件
tar xvfz node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local
cd /usr/local
mv node_exporter-1.0.1.linux-amd64/ node_exporter
第三步:启动node_exproter收集Linux主机的信息
./node_exporter & #启动组件
ss -naltp |grep 9100 #查看9100端口占用情况
[root@agent node_exporter]# ss -naltp |grep 9100
LISTEN 0 128 [::]:9100 [::]:* users:(("node_exporter",pid=4270,fd=3))
回到Prometheus服务器中的配置文件里添加被监控机器的配置
在主机配置文件最后添加下面三行
#vim prometheus.yml
- job_name: 'agent1' #取一个job名称来代表监控的机器
static_configs:
- targets: ['192.168.149.128:9100'] #这里改成被监控机器ip,端口为9100
改完配置文件之后重启服务
pkill prometheus
ss -naltp |grep 9090 #确认端口没有进程占用
./prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
ss -naltp |grep 9090 #确认端口被占用,说明重启成功
回到管理界面 点击Status----Targets------可以看到多了一台监控目标。
使用Prometheus监控mysqld服务
首先Linux中需要安装一个MySQL吧,这个就先自己安装啦。我的已经安装好MySQL啦 1、如何监控其他服务
在node_exproter的基础上,可以根据自己的需要收集其他信息。
2、安装mysqld_exporter组件
第一步:上传组件到Linux服务器
第二步:解压与安装mysqld
tar xvfz mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local
cd /usr/local
mv mysqld_exporter-0.12.1.linux-amd64 mysqld_exporter
3.安装MySQL数据库
4、创建MySQL账号,用于监控MySQL
create user 'ncayu'@'%' IDENTIFIED WITH mysql_native_password BY 'ncayu@168.com';
grant all privileges on *.* to 'ncayu'@'%'with grant option;
flush privileges;
5、在mysqld_exporter组件配置mysql信息(端口:9104)
vim /usr/local/mysqld_exproter/.my.cnf #手动创建
[client]
user=ncayu
password=ncayu@168.com
如果.my.cnf文件创建失败,说明文件夹没有写的权限,赋予权限就可以添加文件啦
添加这个文件是通过这个MySQL账号权限访问MySQL,监控MySQL。 6、启动mysqld_exproter组件
./mysqld_exporter --config.my-cnf=.my.cnf &
ss -naltp |grep 9104 #确认端口9104
浏览器中就可以访问啦,可以看到很多关于MySQL的信息
7.让Prometheus可以拉取mysqld节点信息
在主机配置文件最后添加下面三行
#vim prometheus.yml
- job_name: 'Percona' #取一个job名称来代表监控的MySQL
static_configs:
- targets: ['192.168.149.128:9104'] #这里改成被监控机器ip,端口为9104
改完配置文件之后重启服务
pkill prometheus
ss -naltp |grep 9090 #确认端口没有进程占用
./prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
ss -naltp |grep 9090 #确认端口被占用,说明重启成功
现在就可以看到三个对象啦
使用Grafana连接Prometheus
在Grafana里面看监控信息的就会比较直观啦,充满着科技感,很不错的体验。 下载地址:https://grafana.com/grafana/download
wget https://dl.grafana.com/oss/release/grafana-7.4.1-1.x86_64.rpm -y #自动解决依赖问题
sudo yum install grafana-7.4.1-1.x86_64.rpm
#
systemctl start grafana-server #启动grafana
systemctl enable grafana-server #开机启动
ss -naltp |grep 3000
查看防火墙端口是否开放
# 查询端口是否开放
firewall-cmd --query-port=3000/tcp
# 开放3000端口
firewall-cmd --permanent --add-port=3000/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
可以通过网址访问grafana。
登录grafana
http://192.168.149.130:3000
默认用户名与密码都是admin,首次登陆后,需要对admin的密码进行修改
选择您的配置选项
Grafana后端在其配置文件中定义了许多配置选项(通常在Linux系统上位于/etc/grafana/grafana.ini中)。
在此配置文件中,您可以更改默认管理员密码,http端口,grafana数据库(sqlite3,mysql,postgres),身份验证选项(google,github,ldap,auth proxy)以及许多其他选项。
启动您的grafana服务器。用您的管理员用户登录(默认为admin / admin)。打开侧面菜单(单击顶部菜单中的Grafana图标),转到数据源,然后添加数据源。
添加Prometheus的数据源。
第一步:添加数据源
第二步:设置数据源、数据源名称、类型、IP地址、端口号...
为添加好的数据源做图形显示:
第一步:点击加号,选择Dashboard node_load1 一分钟一次 node_load5 五分钟一次 node_load15 十五分钟一次
Grafana图形显示mysql监控数据
1、修改配置文件安装模板
在Grafana上修改配置文件,并下载安装MySQL监控的dashboard(包含相关json文件,相当于监控模板)
https://github.com/percona/grafana-dashboards 2.修改Grafana配置文件
vim /etc/grafana/grafana.ini
[dashboard.json]
enabled = ture
path = /var/lib/grafana/dashboards
cd /var/lib/grafana/
git clone https://github.com/percona/grafana-dashboards.git #克隆git上的grafana模板
cp -r grafana-dashboards/dashboards/ /var/lib/grafana/ #复制文件
#重启grafana服务
systemctl restart grafana-server
文件夹路径
/var/lib/grafana/dashboards
在grafana中导入相关json文件
导入的是MySQL_Overview.json
其他的json文件导入也是类似的。
界面展示: