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.05Tasks: 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 stKiB Mem : 1881840 total, 1221976 free, 171468 used, 488396 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1555476 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND2002 root 20 0 680320 14264 2460 S 2.0 0.8 0:03.00 barad_agent3832 root 20 0 1003952 34044 18212 S 0.7 1.8 0:02.62 YDService1112 root 20 0 218532 4980 2216 S 0.3 0.3 0:00.09 rsyslogd14: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.gz2、解压[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/prometheus4、添加环境变量[root@VM-0-16-centos prometheus]# vim /etc/profilePROMETHEUS_HOME=/usr/local/prometheusPATH=$PATH:$PROMETHEUS_HOME[root@VM-0-16-centos prometheus]# source /etc/profile5、注册服务[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-lifecycleRestart=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.gz2、安装[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 exporterAfter=node_exporter.service[Service]Type=simpleExecStart=/usr/local/bin/node_exporterExecReload=/bin/kill -HUPKillMode=processRestart=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.gz2、解压[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 mariadb4、创建一个远程链接用户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)]> exitBye5、创建一个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.1user=moonpassword=1236、注册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=:9104Restart=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

