实验环境
系统 | IP地址 | 备注 |
---|---|---|
Centos 7.8 | 172.16.3.255/21 | Prometheus-server |
Centos 7.8 | 172.16.3.226/21 | Prometheus-agent |
监控案例
- a) 监控Linux服务器
- b) 监控CPU,内存,磁盘
- c) 监控服务状态
- d) 使用Grafana炫图展示监控数据
- e) 监控Dockr服务器
- f) 监控MySQL
监控Linux服务器
node_exporter:用户*NIX系统监控,使用Go语言编写的收集器
使用文档:https://Prometheus.io/docs/guides/node-exporter/
GitHub:https://github.com/prometheus/node_exporter/
exporter列表:https://Prometheus.io/docs/instrumenting/exporters/
172.16.3.226操作:(被监控端安装)
在被监控端安装Node_exporter获取数据
[root@k8snode1 ~]# tar zxf node_exporter-1.0.1.linux-amd64.tar.gz
[root@k8snode1 ~]# mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter
[root@k8snode1 ~]# cd /usr/local/node_exporter/
[root@k8snode1 node_exporter]# ls
LICENSE node_exporter NOTICE
[root@k8snode1 node_exporter]# ./node_exporter --help
[root@k8snode1 node_exporter]#cat > /usr/lib/systemd/system/node_exporter.service << EOF
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF
[root@k8snode1 node_exporter]# systemctl daemon-reload
[root@k8snode1 node_exporter]# systemctl start node_exporter
测试一下是否成功: node服务默认端口是9100
http://172.16.3.226:9100/metrics
172.16.3.225操作:
[root@k8smaster prometheus]# vim prometheus.yml
添加一个新的实例:
[root@k8smaster prometheus]# cat sd_config/node.yml
- targets:
- 172.16.3.226:9100
[root@k8smaster prometheus]# kill -hup 380
查看node_CPU的信息
注:在这里可以看到数据说明Node监控没有问题
监控CPU、内存、硬盘
公式:
100 - 空闲率 = 使用率
100 - 使用率 = 空闲率
CPU使用率:
irate(node_cpu_seconds_total{instance="172.16.3.226:9100",mode="idle"}[5m])*100 # 剩余的使用率
100-(irate(node_cpu_seconds_total{instance="172.16.3.226:9100",mode="idle"}[5m])*100) # 使用率
内存使用率:
公式:free + buff/cache=可用率
node_memory_MemFree_bytes # 剩余的内存,比特为单位
node_memory_MemTotal_bytes # 总共的内存,比特为单位
node_memory_Cached_bytes # 缓存
node_memory_Buffers_bytes # 缓存
(node_memory_MemFree_bytes+ node_memory_Cached_bytes+ node_memory_Buffers_bytes)/ node_memory_MemTotal_bytes*100 # 剩余
(node_memory_MemFree_bytes+ node_memory_Cached_bytes+ node_memory_Buffers_bytes)/ node_memory_MemTotal_bytes*100 # 剩余百分比
100-(node_memory_MemFree_bytes+ node_memory_Cached_bytes+ node_memory_Buffers_bytes)/ node_memory_MemTotal_bytes*100 # 使用百分比
磁盘使用率
node_filesystem_files{mountpoint="/",fstype=~"xfs|ext4"} # 根分区剩余的值
node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100 # 根剩余的百分比
100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) # 根已使用的百分比
监控服务状态
172.16.3.226操作:
[root@k8snode1 node_exporter]# cat > /usr/lib/systemd/system/node_exporter.service << EOF
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|sshd|nginx).service
[Install]
WantedBy=multi-user.target
EOF
注: --collector.systemd: 如果想要监控服务的话需要开启systemcd的监控
–collector.systemd.unit-whitelist=(docker|sshd|nginx).service: 指定要监控的服务有哪些,可以匹配所有也可以指定匹配
[root@k8snode1 node_exporter]# systemctl daemon-reload
[root@k8snode1 node_exporter]# systemctl restart node_exporter
[root@k8snode1 node_exporter]# ps -ef | grep node
root 32469 1 0 15:57 ? 00:00:00 /usr/local/node_exporter/node_exporter --collector.systemd --collector.systemd.unit-whitelist="(docker|sshd|nginx).service"
注:ps查看的时候可以看到刚刚添加的内容已经出现在这里啦
node_systemd_unit_state # 标签提供的
注:服务状态
Value=1 说明服务当前所在的状态
Grafana炫图展示监控数据:
Grafana是一个开源的度量分析和可视化系统
安装文档:https://grafana.com/grafana/download
模板共享网址:https://grafana.com/dashboards
共享图表网址:https://grafana.com/dashboards/9276
172.16.3.225操作:
[root@k8smaster ~]# docker run -d --name=grafana -p 3000:3000 grafana/grafana:5.4.3
http://172.16.3.225:3000/ # 默认用户密码是admin – 刚开始登录的时候会让你重新修改密码
添加一下Prometheus的数据源
将Linux服务器创建一个仪表盘在这里展现出来—自己手定义
导入共享图标网址: 模板id:9276
通过下图可以看到以下模板显示的内容
监控Docker服务器
cAdvisor(Container Advisor)google开源,用于收集正在运行的容器资源使用和性能信息。
https://github.com/google/cadvisor
共享仪表盘: https://grafana.com/dashboards/193
172.16.3.225操作:
[root@k8smaster ~]# sudo docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
google/cadvisor:latest
172.16.3.225:8080/metrics # 收集容器相关的信息、信息指标
将cAdvisor添加到Prometheus里监控
[root@k8smaster ~]# vim /usr/local/prometheus/prometheus.yml
[root@k8smaster prometheus]# kill -hup 380
导入193仪表盘
可以看到已经有DOcker的容器信息了![在这里插入图片描述](https://img-blog.csdnimg.cn/20210118105556313.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTY0NTcx,size_16,color_FFFFFF,t_70#pic_center)
监控MySQL
mysql_exporter:用于收集MySQL性能信息
MySQL共享仪表盘(模板):https://grafana.com/dashboards/7362
部署注意事项:https://github.com/prometheus/mysqld_exporter
172.16.3.226操作:
[root@k8snode1 ~]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
2、解压安装
[root@k8snode1 ~]# tar zxf mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@k8snode1 ~]# mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter
[root@k8snode1 ~]# cd /usr/local/mysqld_exporter/
[root@k8snode1 mysqld_exporter]# ls
LICENSE mysqld_exporter NOTICE
[root@k8snode1 mysqld_exporter]# ./mysqld_exporter --help
3、授权用户
[root@k8snode1 mysqld_exporter]# mysql -uroot –p
mysql> CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'chinaedu';
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
4、mysql_exporter客户端在运行的时候免密的方式登录
[root@k8snode1 mysqld_exporter]# cat .my.cnf
[client]
user=exporter
password=chinaedu
5、启用mysql_exporter并且指定刚刚设置的文件,免密登录
[root@k8snode1 mysqld_exporter]# ./mysqld_exporter --config.my-cnf=.my.cnf
6、默认暴露的端口是9104--- 访问一下出现内容说明获取到了MySQL的数据
172.16.3.226:9104/metrics
172.16.3.225操作:
[root@k8smaster ~]# vim /usr/local/prometheus/prometheus.yml # 添加一下MySQL的监控实例
[root@k8smaster prometheus]# kill -hup 380