Centos7安装Promethus(普罗米修斯)
Centos7安装Promethus(普罗米修斯)一、普罗米修斯概述Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。https://prometheus.io/docs/introduction/overview/二、时间序列数
Centos7安装Promethus(普罗米修斯)
文章目录
一、普罗米修斯概述
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的主要特征
多维度数据模型灵活的查询语言不依赖分布式存储,单个服务器节点是自主的以HTTP方式,通过pull模型拉去时间序列数据,也可以通过中间网关支持push模型通过服务发现或者静态配置,来发现目标服务对象支持多种多样的图表和界面展示
4、普罗米修斯原理架构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HF162AyS-1629273687996)(C:\Users\百趣网\AppData\Roaming\Typora\typora-user-images\image-20210817152117077.png)]
三、实验环境准备
服务器 | IP地址 |
---|---|
Prometneus服务器 | 192.168.10.69 |
被监控服务器 | 192.168.10.65 |
grafana服务器 | 192.168.10.64 |
1. 静态ip(要求能上外网)
2. 主机名
各自配置好主机名
# hostnamectl set-hostname master
# hostnamectl set-hostname node1
# hostnamectl set-hostname node2
三台都互相绑定IP与主机名
# vim /etc/hosts
192.168.10.69 master
192.168.10.64 node1
192.168.10.65 node2
echo "192.168.10.69 master
192.168.10.64 node1
192.168.10.65 node2">>/etc/hosts
3. 时间同步(时间同步一定要确认一下)
[root@master ~]# yum install -y ntpdate && ntpdate time.windows.com
4. 关闭防火墙,selinux
# systemctl stop firewalld
# systemctl disable firewalld
# iptables -F
1、安装prometheus
从 https://prometheus.io/download/ 下载相应版本,安装到服务器上
官网提供的是二进制版,解压就能用,不需要编译,下面是安装包下载地址
链接:https://pan.baidu.com/s/1A1e1UDMU5cMt6eKfq3IsEg
提取码:r435
上传prometheus-2.5.0.linux-amd64.tar.gz
[root@master ~]# ls
prometheus-2.5.0.linux-amd64.tar.gz
[root@master ~]# tar -zxvf prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local/
[root@master ~]# mv /usr/local/prometheus-2.5.0.linux-amd64/ /usr/local/prometheus
[root@master local]# cd prometheus/
[root@master prometheus]# ls
console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool
#直接使用默认配置文件启动
[root@master prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
#确认端口(9090)
[root@master ~]# netstat -lntp | grep 9090
tcp6 0 0 :::9090 :::* LISTEN 19328/prometheus
[root@master ~]# lsof -i:9090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
prometheu 20436 root 6u IPv6 4035091 0t0 TCP localhost:33792->localhost:websm (ESTABLISHED)
prometheu 20436 root 7u IPv6 4032453 0t0 TCP *:websm (LISTEN)
prometheu 20436 root 8u IPv4 4032455 0t0 TCP localhost:48488->localhost:websm (ESTABLISHED)
prometheu 20436 root 9u IPv6 4032456 0t0 TCP localhost:websm->localhost:48488 (ESTABLISHED)
prometheu 20436 root 10u IPv6 4034444 0t0 TCP localhost:websm->localhost:33792 (ESTABLISHED)
2、prometheus界面
通过浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面
默认只监控了本机一台,点Status --》点Targets --》可以看到只监控了本机
3、主机数据展示
通过http://服务器IP:9090/metrics可以查看到监控的数据
在web主界面可以通过关键字查询监控项
4、监控远程Linux主机
① 在远程linux主机(被监控端agent1)上安装node_exporter组件
下载地址: https://prometheus.io/download/
上传node_exporter-0.16.0.linux-amd64.tar.gz
[root@node1 ~]# ls
1.html 1.html.10589.2021-08-02@15:25:10~ anaconda-ks.cfg node_exporter-0.16.0.linux-amd64.tar.gz
[root@node1 ~]# tar -zxvf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
node_exporter-0.16.0.linux-amd64/
node_exporter-0.16.0.linux-amd64/LICENSE
node_exporter-0.16.0.linux-amd64/node_exporter
node_exporter-0.16.0.linux-amd64/NOTICE
[root@node1 ~]# mv /usr/local/node_exporter-0.16.0.linux-amd64/ /usr/local/node_exporter
里面就一个启动命令node_exporter,可以直接使用此命令启动
[root@node1 ~]# ps -ef |grep 9100
root 23877 23846 0 16:27 pts/0 00:00:00 grep --color=auto 9100
扩展: nohup命令: 如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题
② 通过浏览器访问http://被监控端IP:9100/metrics就可以查看到 node_exporter在被监控端收集的监控信息
http://192.168.10.65:9100/metrics
③ 回到prometheus服务器的配置文件里添加被监控机器的配置段
在主配置文件最后加上下面三行
[root@master prometheus]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'node1' # 取一个job名称来代 表被监控的机器
static_configs:
- targets: ['192.168.10.65:9100'] # 这里改成被监控机器 的IP,后面端口接9100
改完配置文件后,重启服务
[root@master prometheus]# ps -ef | grep prometheus
root 20436 17886 0 16:00 pts/0 00:00:01 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
root 23037 17886 0 16:33 pts/0 00:00:00 grep --color=auto prometheus
[root@master prometheus]# kill -9 20436
[root@master prometheus]# ps -ef | grep prometheus
root 23069 17886 0 16:34 pts/0 00:00:00 grep --color=auto prometheus
#重启prometheus
[root@master prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
[root@master prometheus]# netstat -lntp |grep 9090
tcp6 0 0 :::9090 :::* LISTEN 23106/prometheus
[root@master prometheus]# ss -lntp | grep 9090
LISTEN 0 128 [::]:9090 [::]:* users:(("prometheus",pid=23106,fd=6))
④ 回到web管理界面 --》点Status --》点Targets --》可以看到多了一台监 控目标
5、监控远程MySQL
① 在被管理机node2上安装mysqld_exporter组件
下载地址: https://prometheus.io/download/
上传node_exporter-0.16.0.linux-amd64.tar.gz
[root@node2 ~]# ls
node_exporter-0.16.0.linux-amd64.tar.gz
[root@node2 ~]# tar xf mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
[root@node2 ~]# mv /usr/local/mysqld_exporter-0.11.0.linux-amd64/ /usr/local/mysqld_exporter
[root@node2 ~]# ls /usr/local/mysqld_exporter/
LICENSE mysqld_exporter NOTICE
#安装mariadb数据库,并授权
[root@node2 mysqld_exporter]# yum install mariadb\* -y
[root@node2 mysqld_exporter]# systemctl start mariadb
[root@node2 mysqld_exporter]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@node2 mysqld_exporter]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identif
ied by '123';
(注意:授权ip为localhost,因为不是prometheus服务器来直接找mariadb 获取数据,而是prometheus服务器找mysql_exporter,mysql_exporter 再找mariadb。所以这个localhost是指的mysql_exporter的IP)
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
#创建一个mariadb配置文件,写上连接的用户名与密码(和上面的授权的用户名 和密码要对应)
[root@node2 mysqld_exporter]# cat /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=123
#启动mysqld_exporter
[root@node2 mysqld_exporter]# nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &
#查看启动端口(9104)
[root@node2 mysqld_exporter]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 16452/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5770/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5852/master
tcp6 0 0 :::9104 :::* LISTEN 20627/./mysqld_expo
tcp6 0 0 :::22 :::* LISTEN 5770/sshd
tcp6 0 0 ::1:25 :::* LISTEN 5852/master
[root@node2 mysqld_exporter]# netstat -lntp |grep 9104
tcp6 0 0 :::9104 :::* LISTEN 20627/./mysqld_expo
② 回到prometheus服务器的配置文件里添加被监控的mariadb的配置段
[root@master ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'node2-mysql'
static_configs:
- targets: ['192.168.10.66:9104']
#改完配置文件后,重启服务
[root@master ~]# pkill prometheus
[root@master ~]# lsof -i:9090
[root@master prometheus]# /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
#查看端口(9090)
[root@master ~]# lsof -i:9090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
prometheu 30731 root 3u IPv6 4349041 0t0 TCP *:websm (LISTEN)
prometheu 30731 root 7u IPv4 4349043 0t0 TCP localhost:48498->localhost:websm (ESTABLISHED)
prometheu 30731 root 8u IPv6 4349044 0t0 TCP localhost:websm->localhost:48498 (ESTABLISHED)
prometheu 30731 root 10u IPv6 4349222 0t0 TCP localhost:33804->localhost:websm (ESTABLISHED)
prometheu 30731 root 11u IPv6 4348321 0t0 TCP localhost:websm->localhost:33804 (ESTABLISHED)
[root@master ~]# netstat -lntp | grep 9090
tcp6 0 0 :::9090 :::* LISTEN 30731/prometheus
③ 回到web管理界面 --》点Status --》点Targets --》可以看到监控mariadb了
四、Grafana可视化图形工具
1.安装grafana请看上篇文章
https://blog.csdn.net/weixin_45858439/article/details/119755969
wget https://dl.grafana.com/oss/release/grafana-5.3.4-1.x86_64.rpm
yum localinstall grafana-5.3.4-1.x86_64.rpm -y
systemctl start grafana-server
登录:ip:3000
用户名:admin
密码:admin
2.使用Grafana连接Prometheus
下面我们把prometheus服务器收集的数据做为一个数据源添加到grafana,让grafana可以得到prometheus的数据
然后为添加好的数据源做图形显示
保存
最后在dashboard可以查看到
匹配条件显示
3.Grafana图形显示MySQL监控数据
① 在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)
参考网址: https://github.com/percona/grafana-dashboards
#在grafana配置文件里最后加上以下三行
[root@grafana ~]# vim /etc/grafana/grafana.ini
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
[root@grafana ~]# cd /var/lib/grafana/
[root@grafana grafana]# git clone https://github.com/percona/grafana-dashboards.git
[root@grafana grafana]# cp -r grafana-dashboards/dashboards/ /var/lib/grafana/
[root@grafana grafana]# systemctl restart grafana-server
② 在grafana图形界面导入相关json文件
③ 点import导入后,报prometheus数据源找不到,因为这些json文件里默认
要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫
prometheus_data(坑啊)
那么请自行把原来的prometheus_data源改名为Prometheus即可(注意:第一个字母P是大写)
然后再回去刷新,就有数据了(如下图所示)
更多推荐
所有评论(0)