文章目录
Promethus监控系统介绍
- 能够安装prometheus服务器
- 能够通过安装node_exporter监控远程linux
- 能够通过安装mysqld_exporter监控远程mysql数据库
- 能够安装grafana
- 能够在grafana添加prometheus数据源
- 能够在grafana添加监控cpu负载的图形
- 能够在grafana图形显示mysql监控数据
概叙
Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。
时间序列数据
时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。
1.特点
-
性能好
关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。
-
成本低
高效的压缩算法,节省存储空间,有效降低IO
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)
2.特征
- 多维度数据模型
- 灵活的查询语言(PromQL)
- 不依赖分布式存储,单个服务器节点是自治的
- 以HTTP方式,通过pull模型拉去时间序列数据
- 也可以通过中间网关支持push模型
- 通过服务发现或者静态配置,来发现目标服务对象
- 支持多种多样的图表和界面展示
3.环境设置
名称 | ip | 主机名 |
---|---|---|
Grafana | 172.23.213.43 | Grafana |
Prometheus | 172.23.213.42 | prometheus |
4.服务端部署
- 服务端为k8s-master1
- 从 https://prometheus.io/download/ 下载相应版本,安装到服务器上官网提供的是二进制版,解压就能用,不需要编译。
[root@k8s-master-01 opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.25.0/prometheus-2.25.0.linux-amd64.tar.gz
[root@k8s-master1 ~]# tar xf prometheus-2.25.0.linux-amd64.tar.gz -C /usr/local/
5.启动
# 添加到环境变量
[root@k8s-master1 ~]# vim /etc/profile
export PROMETHEUS_HOME=/usr/local/prometheus-2.25.0.linux-amd64/
PATH=$PATH:$GO_HOME:$GO_ROOT:$GO_PATH:$GO_HOME/bin:$PROMETHEUS_HOME
[root@k8s-master1 ~]# source /etc/profile
# 启动
[root@k8s-master1 ~]# prometheus --config.file="/usr/local/prometheus-2.25.0/prometheus.yml" &
# 访问
http://192.168.12.11:9090/
6.测试连接
在浏览器上输入:http://ip:9090,出现如下页面及表示启动成功。
默认只监控了本机一台,点Status -->
点Targets -->
可以看到只监控了本机。
通过http://服务器IP:9090/metrics
可以查看到监控的数据,在web主界面可以通过关键字查询监控项
7.客户端部署
- 客户端为jenkins、gitlab
- 安装node_exporter组件
# 下载node包
[root@jenkins ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.1.1/node_exporter-1.1.1.linux-amd64.tar.gz
# 推到相应机器并解压
[root@jenkins packages]# tar xf node_exporter-1.1.1.linux-amd64.tar.gz -C /usr/local/
[root@gitlab packages]# tar xf node_exporter-1.1.1.linux-amd64.tar.gz -C /usr/local/
[root@jenkins ~]# ls /usr/local/node_exporter-1.1.1.linux-amd64/
LICENSE node_exporter NOTICE
# 启动客户端 # 可指定端口防止冲突(默认为9100)
[root@jenkins ~]# nohup /usr/local/node_exporter-1.1.1.linux-amd64/node_exporter &
[root@gitlab ~]# nohup /usr/local/node_exporter-1.1.1.linux-amd64/node_exporter ----web.listen-address=":9101" &
参数:
--web.listen-address=":9100" #修改默认端口,防止冲突
--web.telemetry-path="/metrics" #获取metric信息的url,默认是/metrics,若需要修改则通过此参数
--log.level="info" #设置日志级别
--log.format="logger:stderr" #设置打印日志的格式,若有自动化日志提取工具可以使用这个参数规范日志打印的格式
3、回到prometheus服务器的配置文件里添加被监控机器的配置段。
在主配置文件最后加上下面三行
- job_name: 'agent01'
static_configs:
- targets: ['172.23.213.42:9100','172.23.213.43:9101']
改完配置文件后,重启服务
[root@k8s-master-01 opt]# pkill prometheus
[root@k8s-master-01 opt]# /usr/local/prometheus-2.25.0/prometheus --config.file="/usr/local/prometheus-2.25.0/prometheus.yml" &
回到web管理界面 --> 点Status --> 点Targets --> 可以看到多了两台监控目标
8.监控MySQL
1)安装mysqld_exporter组件
- 在被管理机agent1上安装mysqld_exporter组件
[root@jenkins ~]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@jenkins ~]# tar xf packages/mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
[root@gitlab ~]# tar xf packages/mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
[root@k8s-master-01 opt]# tar -xf mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@k8s-master-01 opt]# mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter-0.12.1
[root@jenkins ~]# ll /usr/local/mysqld_exporter-0.12.1.linux-amd64/
总用量 14484
-rw-r--r-- 1 3434 3434 11325 Jul 29 2019 LICENSE
-rwxr-xr-x 1 3434 3434 14813452 Jul 29 2019 mysqld_exporter
-rw-r--r-- 1 3434 3434 65 Jul 29 2019 NOTICE
2)安装mariadb
# 安装mariadb数据库,并授权
[root@jenkins ~]# yum install mariadb\* -y
[root@jenkins ~]# systemctl enable --now mariadb
[root@jenkins ~]# mysql
MariaDB [(none)]> grant select,replication client,process on *.* to mysql_monitor@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
# 普罗米修斯是通过mysql_exporter来找mariadb进行获取数据的,所以要给它授权(用户名可自定义,与.my.cnf对应)
# (注意:授权ip为localhost,因为不是prometheus服务器来直接找mariadb 获取数据,而是prometheus服务器找mysql_exporter,mysql_exporter 再找mariadb。所以这个localhost是指的mysql_exporter的IP)
# 创建一个mariadb配置文件,写上连接的用户名与密码(和上面的授权的用户名 和密码要对应)
[root@jenkins ~]# vim /usr/local/mysqld_exporter-0.12.1.linux-amd64/.my.cnf
[client]
user=mysql_monitor
password=123
port=30306
# 启动mysqld_exporter
[root@jenkins ~]# cd /usr/local/mysqld_exporter-0.12.1.linux-amd64
[root@jenkins mysqld_exporter-0.12.1.linux-amd64]# ./mysqld_exporter --config.my-cnf=.my.cnf
# 确认端口(9104)
# 回到prometheus服务器的配置文件里,添加被监控的mariadb的配置段
- job_name: 'DevOps'
static_configs:
- targets: ["192.168.12.83:9100","192.168.12.82:9101"]
- job_name: 'mysql'
static_configs:
- targets: ["192.168.12.83:9104"]
[root@k8s-master-01 opt]# pkill prometheus
[root@k8s-master-01 opt]# /usr/local/prometheus-2.25.0/prometheus --config.file="/usr/local/prometheus-2.25.0/prometheus.yml" &
Grafana
1.什么是Grafana
Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。
2.使用Grafana连接Prometheus
在grafana服务器上安装grafana。
[root@k8s-master-01 opt]# wget https://dl.grafana.com/oss/release/grafana-7.4.3-1.x86_64.rpm
[root@k8s-master-01 opt]# sudo yum install grafana-7.4.3-1.x86_64.rpm
# 启动服务
[root@k8s-master-01 opt]# systemctl enable --now grafana-server
[root@k8s-master1 ~]# cd /usr/local/grafana-7.4.3/ && grafana-server -config ./conf/defaults.ini &
通过浏览器访问 http:// grafana服务器IP:3000
就到了登录界面,使用默认的admin用户,admin密码就可以登陆了。
下面我们把prometheus服务器收集的数据做为一个数据源添加到grafana,让grafana可以得到prometheus的数据。
3.Grafana图形显示MySQL监控数据
在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)
[root@k8s-master1 ~]# vim /usr/local/grafana-7.4.3/conf/defaults.ini
# 尾行新增插件库
[dashboards.json]
enabled = true
path= /var/lib/grafana/dashboards
# 创建目录
[root@k8s-master1 ~]# mkdir -p /var/lib/grafana/dashboards
# 克隆监控模板json到本地
[root@grafana grafana]# git clone https://github.com/percona/grafana-dashboards.git
# 查看
[root@k8s-master1 ~]# ll packages/1/grafana-dashboards/dashboards/
total 9932
-rw-r--r-- 1 root root 24679 Apr 23 14:55 Advanced_Data_Exploration.json
-rw-r--r-- 1 root root 76839 Apr 23 14:55 CPU_Utilization_Details.json
-rw-r--r-- 1 root root 100017 Apr 23 14:55 Disk_Details.json
···
# 复制监控模板json到grafana
[root@k8s-master1 ~]# cp -r packages/1/grafana-dashboards/dashboards/ /var/lib/grafana/
# 查看
[root@k8s-master1 ~]# ll /var/lib/grafana/dashboards/
total 9932
-rw-r--r-- 1 root root 24679 Apr 23 19:52 Advanced_Data_Exploration.json
-rw-r--r-- 1 root root 76839 Apr 23 19:52 CPU_Utilization_Details.json
-rw-r--r-- 1 root root 100017 Apr 23 14:55 Disk_Details.json
···
# 重启grafana服务
[root@k8s-master1 ~]# cd /usr/local/grafana-7.4.3
[root@k8s-master1 grafana-7.4.3]# grafana-server -config conf/defaults.ini &