监控概述

  • 监控就是实时的帮助我们来监控或者探测我们部署的服务是否正常运行

常用的监控

  • zabbix
  • 优点:组件比较全,缺点:性能不高(zabbix底层用的是Msql数据库)
  • 当zabbix监控大型集群的时候,怎么优化(如何优化数据库)
  • 当数据库中一个表中数据超过2000w的时候,数据库的性能急剧下降
  • 阿里云云监控
  • 腾讯云蓝鲸监控
  • 普罗米修斯
  • 性能比较高,底层使用(时序数据库,时序数据库性能比Mysql数据库性能高很多)
  • 原生支持监控容器

普罗尼修斯监控流程

普罗米修斯监控分为两种情况

  • 携带metrics接口的服务(kubernetes、ETCD、Docker)
  • 不携带metrics接口的服务(Nginx、mysql、Linux主机),针对于不携带metrics接口的服务,我们需要安装一个exporter插件

部署普罗米修斯

官网:https://prometheus.io/

下载链接:https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz

1. 实验环境

主机名					外网IP地址					内网IP地址					配置
Prometheus				192.168.15.71				172.16.1.71					内存4G
Web01					192.168.15.7				172.16.1.7

2. 安装Prometheus软件

- Prometheus主机
1. 安装Prometheus软件包
rz -E prometheus-2.25.0.linux-amd64.tar.gz
tar -xf prometheus-2.25.0.linux-amd64.tar.gz -C /usr/local/

2. 建立Prometheus超链接
ln -s /usr/local/prometheus-2.25.0.linux-amd64 /usr/local/prometheus

3. 将Prometheus添加至系统环境变量
vim /etc/profile
...
export PROMETHEUS_HOME=/usr/local/prometheus
PATH=$PATH:$PROMETHEUS_HOME
export PATH

4. 重载系统环境变量文件
source /etc/profile

5. 查看Prometheus的版本信息
prometheus --version			# 如果可以查看到Prometheus的版本信息,那么就表示Prometheus安装完成了

6. 启动Prometheus服务
prometheus --config.file=/usr/local/prometheus/prometheus.yml

3. 测试Prometheus的监控本机状态

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_数据库


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_02

使用普罗米修斯监控Linux主机

Linux主机下载exporter插件链接:
https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz

1. 在Linux主机安装exporter插件

- Web01主机
1. Linux主机安装exporter插件
rz -E node_exporter-1.1.2.linux-amd64.tar.gz
tar -xf node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/

2. 建立node_exporter超链接
ln -s /usr/local/node_exporter-1.1.2.linux-amd64/ /usr/local/node_exporter
ls /usr/local/node_exporter
# LICENSE  node_exporter(执行文件)  NOTICE

3. 将node_exporter执行文件目录添加至环境变量
vim /etc/profile
....
export NODE_EXPORTER=/usr/local/node_exporter
export PATH=$PATH:$NODE_EXPORTER

4. 重载系统环境变量文件
source /etc/profile

5. 启动node_exporter服务
node_exporter

6. 查看node_exporter监听的端口号
netstat -lntp
# tcp6       0      0 :::9100                 :::*                    LISTEN      1701/node_exporter

2. 将Linux主机的exporter插件添加至Prometheus软件服务

- Prometheus主机
1. 修改Prometheus配置文件
vim /usr/local/prometheus/prometheus.yml
scrape_configs:
... 
  - job_name: 'Linux Node'					# 添加监控项的名字
    static_configs:							
      - targets: ['172.16.1.7:9100']		# 监控主机的ip地址和端口号

2. 启动Prometheus服务
prometheus --config.file=/usr/local/prometheus/prometheus.yml

3. 测试Prometheus的监控Linux主机状态

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_03


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_04

使用Grafana展示数据

Grafana是业内做数据展示最好的一款产品,官网:https://grafana.com/

- Prometheus主机
1. 安装Grafana软件
rz -E grafana-7.3.6-1.x86_64.rpm
yum -y install grafana-7.3.6-1.x86_64.rpm

2. 启动Grafana软件服务
systemctl start grafana-server.service 
netstat -lntp			# 查看grafana服务监听的端口号
# tcp6       0      0 :::3000                 :::*                    LISTEN      1997/grafana-server

登陆Grafana展示

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_05


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_数据库_06


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_数据库_07


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_08

监控Linux主机单个状态信息

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_09


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_10

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_11

监控Linux主机整体的状态信息

Prometheus各种展示页面状态码: https://grafana.com/grafana/dashboards?dataSource=prometheus

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_12


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_13

使用Prometheus监控Mysql数据库

Prometheus监控Mysql数据库官网教程:https://github.com/prometheus/mysqld_exporter

实验环境

主机名					外网IP地址					内网IP地址					配置
Prometheus				192.168.15.71				172.16.1.71					内存4G
db01					192.168.15.51				172.16.1.51

1. 在Mysql主机安装exporter插件

- db01主机
1. db01主机安装exporter插件
rz -E mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar -xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/

2. 建立mysql_exporter超链接
ln -s /usr/local/mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
ls /usr/local/mysqld_exporter
# LICENSE  mysqld_exporter(执行文件)  NOTICE

3. 创建一个数据库用户
mysql -uroot -p123
CREATE USER 'exporter'@'%' IDENTIFIED BY '123';			# 创建一个数据库用户
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';		# 授权过程,复制客户端,给创建的数据库用户分配一个权限
use mysql;					# 切换到mysql库中
select Host,User from user;			# 查看创建的用户信息
#  Host       User     
#  %          exporter 

4. 创建数据库用户和密码文件
vim /usr/local/mysqld_exporter/.my.cnf
[client]
host=172.16.1.51
user=exporter
password=123

5. 启动mysqld_exporter服务
cd /usr/local/mysqld_exporter/
./mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter/.my.cnf"
# INFO[0000] Listening on :9104                            source="mysqld_exporter.go:283"

如果启动mysqld_exporter服务出现 
Access denied for user ‘root‘@‘db01‘(using password: YES) source=“exporter.go:146“报错,
请参考下一篇博文解决方法

2. 将Mysql主机的exporter插件添加至Prometheus软件服务

- Prometheus主机
1. 修改Prometheus配置文件
vim /usr/local/prometheus/prometheus.yml
scrape_configs:
... 
  - job_name: 'Mysql Server'					# 添加监控项的名字
    static_configs:							
      - targets: ['172.16.1.51:9104']		# 监控主机的ip地址和端口号

2. 启动Prometheus服务
prometheus --config.file=/usr/local/prometheus/prometheus.yml

3. 测试Prometheus的监控Mysql主机状态

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_14


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_数据库_15

4. Mysql主机状态添加至Garafana展示

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_16


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_mysql_17


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_18

Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_19


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_数据库_20


Prometheus 如何监控docker容器是否在运行 prometheus数据库监控_linux_21