Prometheus是一款专门用来监控容器的一款软件。 传统的监控软件大多数是依赖于IP的,但是容器没有该固定的IP,再面对容器的时候,传统的监控软件就显得很茫然。
1、监控
什么是监控呢? 运维工程师是无法做到每天24小时时时刻刻盯着服务器,这个时候为了能够立即发现服务器异常,我们就需要有一款专门用来盯着服务器的软件,来帮助运维工程师监控服务器的状态,如果出现服务器异常,能够实时提醒运维工程师。
2、传统的监控有哪些呢?
2.1、top命令
top - 14:55:32 up 12 min, 2 users, load average: 0.19, 0.09, 0.05
Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.7 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1881840 total, 1221976 free, 171468 used, 488396 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1555476 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2002 root 20 0 680320 14264 2460 S 2.0 0.8 0:03.00 barad_agent
3832 root 20 0 1003952 34044 18212 S 0.7 1.8 0:02.62 YDService
1112 root 20 0 218532 4980 2216 S 0.3 0.3 0:00.09 rsyslogd
14:55:32 : 当前系统时间
up : 系统处于启动状态
12 min : 启动时长
2 users : 当前登录系统的用户数
load average:系统负载
传统的命令监控无法做到实时监控并报警,就需要一款专门的监控软件来帮助我们实现实时监控并报警。
3、Prometheus监控软件
官网:https://prometheus.io/ 特点:
- 开源免费
- 适配容器监控
3.1、部署
1、下载
wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus-2.34.0.linux-amd64.tar.gz
2、解压
[root@VM-0-16-centos ~]# tar -xf prometheus-2.25.0.linux-amd64.tar.gz -C /usr/local/
3、创建一个软连接
[root@VM-0-16-centos prometheus-2.25.0.linux-amd64]# ln -s /usr/local/prometheus-2.25.0.linux-amd64 /usr/local/prometheus
4、添加环境变量
[root@VM-0-16-centos prometheus]# vim /etc/profile
PROMETHEUS_HOME=/usr/local/prometheus
PATH=$PATH:$PROMETHEUS_HOME
[root@VM-0-16-centos prometheus]# source /etc/profile
5、注册服务
[root@VM-0-16-centos ~]# wget http://106.13.81.75/prometheus.service
[root@VM-0-16-centos ~]# cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@VM-0-16-centos ~]# systemctl daemon-reload
[root@VM-0-16-centos ~]# systemctl start prometheus
[root@VM-0-16-centos ~]# systemctl status prometheus
4、Prometheus监控的方式
4.1、获取监控数据端
1、软件自身携带metrics接口
也就是软件在内部已经集成了metrics接口,promethes可以通过软件自身携带的metrics接口获取软件的监控数据,进而实现监控。
2、依赖Exporter插件创建一个个metrics接口
相对于拥有metrics接口的软件而言,大多数软件是没有自带metrics接口的,那么这个时候如果需要使用prometheus来监控软件,就需要一个与之相对应的exporter插件,来为其提供一个metrics接口。
4.2、存储监控数据
对于Prometheus而言,存储监控数据的数据库是TSDB时序数据库(科普:时序数据库是一种高性能的数据库,相对于MySQL数据库而言,其速度要比MySQL数据库快N多倍,同时MySQL数据库在处理超过2000万行数据的内容时,延时非常严重,TSDB数据库处理的数据是TB级)
4.3、容器化
如果我们将Prometheus容器化了之后,那么prometheus的监控流程会有所变化。
4.4、展现数据
通常采用PromeQL(科普:PromeQL是prometheus中的SQL语言,主要是用来查询Prometheus中的监控数据的)来展示数据。
5、使用Prometheus监控Linux主机
上面我们已经说过了,Promentheus监控是需要metrics接口的。Linux主机是不携带Metrics接口的,所以我们需要部署一个Linux主机的Exporter,来为其提供一个metrics接口。
5.1、部署Node Exporter
1、下载node_exporter
[root@VM-0-16-centos ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
2、安装
[root@VM-0-16-centos ~]# tar -xf node_exporter-1.1.2.linux-amd64.tar.gz
[root@VM-0-16-centos ~]# mv node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/
3、注册node-exporter服务
[root@VM-0-16-centos ~]# mv node-exporter.service /usr/lib/systemd/system/
[root@VM-0-16-centos ~]# cat /usr/lib/systemd/system/node-exporter.service
[Unit]
Description=This is prometheus node exporter
After=node_exporter.service
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
ExecReload=/bin/kill -HUP
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@VM-0-16-centos ~]# systemctl daemon-reload
[root@VM-0-16-centos ~]# systemctl start node-exporter
5.2、加入prometheus
[root@VM-0-16-centos ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'Node-Exporter'
static_configs:
- targets:
- '192.168.0.16:9100'
[root@VM-0-16-centos ~]# systemctl restart prometheus
6、使用Prometheus监控MySQL数据库
MySQL数据库也是没有Metrices接口的。
6.1、部署MySQL Exporter
1、下载
wget https://ghproxy.com/https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
2、解压
[root@VM-0-16-centos opt]# tar -xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
[root@VM-0-16-centos opt]# mv mysqld_exporter-0.14.0.linux-amd64/mysqld_exporter /usr/local/bin/
3、安装数据库
[root@VM-0-16-centos opt]# yum install mariadb* -y
[root@VM-0-16-centos opt]# systemctl start mariadb
4、创建一个远程链接用户
MariaDB [(none)]> grant all privileges on *.* to 'moon'@'%' identified by '123' with grant option;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
5、创建一个MySQL-Exporter的配置文件
[root@VM-0-16-centos ~]# vim /root/.my.cnf
[root@VM-0-16-centos ~]# cat /root/.my.cnf
[client]
host=127.0.0.1
user=moon
password=123
6、注册mysql-exporter服务
[root@VM-0-16-centos ~]# cat /usr/lib/systemd/system/mysqld-exporter.service
[Unit]
Description=Prometheus
[Service]
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/root/.my.cnf --web.listen-address=:9104
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@VM-0-16-centos ~]# systemctl daemon-reload
[root@VM-0-16-centos ~]# systemctl start mysqld-exporter.service
[root@VM-0-16-centos ~]# systemctl status mysqld-exporter.service
6.2、将mysql-exporter加入prometheus
[root@VM-0-16-centos ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'MySQL-Exporter'
static_configs:
- targets:
- '192.168.0.16:9104'
[root@VM-0-16-centos ~]# systemctl restart prometheus