Grafana自定义dashboard与监控主流中间件
🌟Grafana自定义Dashboard
CPU使用率
(1 - sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100
CPU核心数
count(node_cpu_seconds_total{mode="idle"}) by (instance)
服务器启动时间
node_time_seconds - node_boot_time_seconds
内存大小
node_memory_MemTotal_bytes/1024/1024/1024
🌟Grafana变量定义
Grafana设置变量
面板使用变量
🌟Grafana表格制作
配置Query(查询)
avg(node_uname_info) by (instance,nodename,release)
配置Transform(转换)
添加Overrides(覆盖)属性
如上图所示,依次点击"Overrides","Add field override","Fields with name"如下图所示,"Fields with name"选择响应的列字段(比如instance),而后点击"add override property",选择"Stamd options> Display name"
配置多指标监控展示
统计系统负载
如上图所示,我们依次按照图标执行,并添加"node_load5-0"查询,发现最终展示效果并不理想,需要配置"Transform"页面。如下图所示,我们在"Transform"页面添加"Merge"转换,而后在为"Value #B"添加Overrides配置进行输出展示
统计CPU核数
如上图所示,继续添加CPU核心数监控,PromQL语句: count(node_cpu_seconds_total{mode='system'}) by (instance)
统计CPU使用率
如上图所示,继续添加CPU使用率监控,PromQL语句: (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)) * 100
统计内存总量
如上图所示,继续添加内存总量的监控,PromQL语句: node_memory_MemTotal_bytes-0值得注意的是,需要当我们为内存配置属性时要配置两个,一个是列的名称(Display name),另一个是单位转换(Unit)
统计内存使用率
如上图所示,继续添加内存使用率的监控,PromQL语句: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))*100
统计网卡出流量
如上图所示,继续网卡出流量的监控,PromQL语句:max(rate(node_network_transmit_bytes_total[1m])) by (instance)
配置阈值和背景色
配置指定的表格颜色
如上图所示,我们可以为指定表格添加一个"Cell type"属性,然后选择"Colored background",就可以发现其会自动变色。
压力测试观察Thresholds(阈值)颜色变化
1.安装stress压测工具
[root@node-exporter42 ~]# apt -y install stress2.开始内存压测
[root@node-exporter42 ~]# stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10m
stress: info: [2103] dispatching hogs: 8 cpu, 4 io, 2 vm, 0 hdd3.观察监控变化
如上图所示,表格的颜色变红了,根本原因是超过了定义的"Thresholds"(阈值)默认值: 80,我们可以自行修改该阈值哟~
Cell options(单元选项)
如上图所示,我们可以定义"Cell options"(单元选项),修改背景色,颜色之类的,但是个人感觉还是Auto的看着比较顺眼,你可以自行修改哈。
Grafana验证实例宕机映射
测试的PromQL
up{job="node-exporter"}
添加Value Mappings
而后点击"add override property",选择"Value Mappings> Value Mappings",再次点击"Add value mappings",将1映射为"Up",将0映射为"Down",最后可以将Down状态设置为红色,将Up状态设置为绿色。表格添加一个"Cell type"属性,然后选择"Colored background",就可以发现其会自动变色。
🌟备份与恢复仪表盘
备份仪表盘
如上图所示,我们可以将自己做的dashboard导出相当于备份,而且也可以给其他人共享。
恢复仪表盘
如上图所示,如果本地的dashboard删除了,或者别人要用咱们的dashboard就可以手动导入啦
🌟Prometheus监控主流的中间件
prometheus监控主流的中间件之docker
参考链接: https://github.com/google/cadvisor
部署docker环境(所有节点)
cadvisor-v0.52.1.tar.gz
导入镜像(所有节点)
docker load -i cadvisor-v0.52.1.tar.gz
运行测试的镜像
[root@node-exporter41 ~]# docker run -id --name c1 alpine:3.20.2
[root@node-exporter41 ~]# docker run -id --name c2 alpine:3.20.2[root@node-exporter42 ~]# docker run -id --name c3 alpine:3.20.2
[root@node-exporter42 ~]# docker run -id --name c4 alpine:3.20.2[root@node-exporter43 ~]# docker run -id --name c5 alpine:3.20.2
[root@node-exporter43 ~]# docker run -id --name c6 alpine:3.20.2
运行CAdVisor
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 \--network host \--detach=true \--name=cadvisor \--privileged \--device=/dev/kmsg \gcr.io/cadvisor/cadvisor-amd64:v0.52.1
访问CAdvisor的webUI
http://10.0.0.41:8080/docker/http://10.0.0.42:8080/docker/http://10.0.0.43:8080/docker/[root@node-exporter41 ~]# curl -s http://10.0.0.43:8080/metrics | wc -l
3067
Prometheus监控容器节点
[root@prometheus-server31 ~]# vim /app/tools/prometheus-2.53.4.linux-amd64/prometheus.yml- job_name: "docker-cadVisor"static_configs:- targets: - 10.0.0.41:8080- 10.0.0.42:8080- 10.0.0.43:8080
热加载配置文件
[root@prometheus-server31 ~]# curl -X POST 10.0.0.31:9090/-/reload
验证配置是否生效
http://10.0.0.31:9090/targets?search=
Grafana导入ID模板
10619
prometheus监控主流的中间件之mysql
部署MySQL
1..运行MySQL服务
[root@node-exporter43 ~]# docker run -d --network host --name mysql-server --restart always -e MYSQL_DATABASE=prometheus -e MYSQL_USER=zhu -e MYSQL_PASSWORD=zhu -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:8.0.36-oracle --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password2..检查MySQL服务
[root@node-exporter43 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16aa74bc9e03 mysql:8.0.36-oracle "docker-entrypoint.s…" 2 seconds ago Up 2 seconds mysql-server
[root@node-exporter43 ~]#
[root@node-exporter43 ~]# ss -ntl | grep 3306
LISTEN 0 151 *:3306 *:*
LISTEN 0 70 *:33060 *:*
[root@node-exporter43 ~]# 3..添加用户权限
[root@node-exporter43 ~]# docker exec -it mysql-server mysql
mysql> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO zhu;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR zhu;
下载MySQL-exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-amd64.tar.gz
解压软件包
tar xf mysqld_exporter-0.17.2.linux-amd64.tar.gz -C /usr/local/bin/ mysqld_exporter-0.17.2.linux-amd64/mysqld_exporter --strip-components=1
运行MySQL-exporter暴露MySQL的监控指标
[root@node-exporter42 ~]# vim .my.cnf
[client]
host = 10.0.0.43
port = 3306
user = zhu
password = zhu
[root@node-exporter42 ~]# mysqld_exporter --config.my-cnf=/root/.my.cnf
验证测试
[root@node-exporter41 ~]# curl -s http://10.0.0.42:9104/metrics | wc -l
修改Prometheus的配置文件
[root@prometheus-server31 ~]# vim /app/tools/prometheus-2.53.4.linux-amd64/prometheus.yml- job_name: "mysql-exporter"static_configs:- targets:- 10.0.0.42:9104
热加载配置文件
[root@prometheus-server31 ~]# curl -X POST 10.0.0.31:9090/-/reload
验证配置是否生效
http://10.0.0.31:9090/targets?search=
Grafana导入ID模板
14057
17320
prometheus监控主流的中间件之mongoDB
下载MongoDB的exporter
https://github.com/percona/mongodb_exporter/releases/download/v0.47.1/mongodb_exporter-0.47.1.linux-amd64.tar.gz
解压软件包
[root@node-exporter42 ~]# tar xf mongodb_exporter-0.43.1.linux-amd64.tar.gz -C /usr/local/bin/ mongodb_exporter-0.43.1.linux-amd64/mongodb_exporter --strip-components=1
运行mongodb-exporter
mongodb_exporter --mongodb.uri=mongodb://10.0.0.43:27017 --log.level=info --collect-all --no-collect.pbm
验证mongoDB-exporter的WebUI
http://10.0.0.42:9216/metrics[root@node-exporter41 ~]# curl -s http://10.0.0.42:9216/metrics | wc -l
8847
配置Prometheus监控mongoDB容器
[root@prometheus-server31 ~]# vim /app/tools/prometheus-2.53.4.linux-amd64/prometheus.yml- job_name: mongodb-exporterstatic_configs:- targets: - 10.0.0.42:9216
热加载
[root@prometheus-server31 ~]# curl -X POST http://10.0.0.31:9090/-/reload
验证Prometheus配置是否生效
http://10.0.0.31:9090/targets?search=可以进行数据的查询,推荐使用: mongodb_dbstats_dataSize
grafana导入模板ID
参考链接: https://grafana.com/grafana/dashboards
16504
prometheus监控主流的中间件之nginx
编译安装nginx
1.安装编译工具
[root@node-exporter41 ~]# cat > /etc/apt/sources.list <<'EOF'
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
EOF[root@node-exporter41 ~]# apt update
[root@node-exporter41 ~]# apt -y install git wget gcc make zlib1g-dev build-essential libtool openssl libssl-dev2.克隆nginx-module-vts模块
git clone https://gitee.com/jasonyin2020/nginx-module-vts.git3.下载nginx软件包
wget https://nginx.org/download/nginx-1.28.0.tar.gz4.解压nginx
tar xf nginx-1.28.0.tar.gz5.配置nginx
cd nginx-1.28.0/
./configure --prefix=/app/tools/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --without-http_rewrite_module --with-http_stub_status_module --without-http_gzip_module --with-file-aio --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/root/nginx-module-vts6.编译并安装nginx
make -j 2 && make install7.修改nginx的配置文件
vim /app/tools/nginx/conf/nginx.conf
...
http {vhost_traffic_status_zone;upstream promethues {server 10.0.0.31:9090;}...server {...location / {root html;# index index.html index.htm;proxy_pass http://promethues;}location /status {vhost_traffic_status_display;vhost_traffic_status_display_format html;}}
}8.检查配置文件语法
/app/tools/nginx/sbin/nginx -t9.启动nginx
/app/tools/nginx/sbin/nginx10.访问nginx的状态页面
http://10.0.0.41/status/format/prometheus
prometheus监控主流的中间件之tomcat
参考链接: https://github.com/nlighten/tomcat_exporter
基于Dockerfile构建tomcat-exporter
[root@node-exporter43 ~]# git clone https://gitee.com/jasonyin2020/tomcat-exporter.git
[root@node-exporter43 ~]# cd tomcat-exporter/
[root@node-exporter43 tomcat-exporter]#
[root@node-exporter43 tomcat-exporter]# ll
total 44
drwxr-xr-x 5 root root 4096 May 13 11:55 ./
drwx------ 10 root root 4096 May 13 11:55 ../
-rw-r--r-- 1 root root 96 May 13 11:55 build.sh
-rw-r--r-- 1 root root 503 May 13 11:55 Dockerfile
drwxr-xr-x 8 root root 4096 May 13 11:55 .git/
drwxr-xr-x 2 root root 4096 May 13 11:55 libs/
-rw-r--r-- 1 root root 3407 May 13 11:55 metrics.war
drwxr-xr-x 2 root root 4096 May 13 11:55 myapp/
-rw-r--r-- 1 root root 191 May 13 11:55 README.md
-rw-r--r-- 1 root root 7604 May 13 11:55 server.xml
[root@node-exporter43 tomcat-exporter]#
[root@node-exporter43 tomcat-exporter]# bash build.sh
运行tomcat镜像
[root@node-exporter43 tomcat-exporter]# docker run -dp 18080:8080 --name tomcat-server registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/tomcat9-app:v1
5643c618db790e12b5ec658c362b3963a3db39914c826d6eef2fe55355f1d5d9
访问tomcat应用
http://10.0.0.43:18080/metrics/
http://10.0.0.43:18080/myapp/
配置prometheus监控tomcat应用
参考链接: https://github.com/nlighten/tomcat_exporter/blob/master/dashboard/example.json
1.修改配置文件
[root@prometheus-server31 ~]# vim /app/tools/prometheus-2.53.4.linux-amd64/prometheus.yml ...- job_name: "tomcat-exporter"static_configs:- targets: - "10.0.0.43:18080"2.重新加载配置并验证配置是否生效
curl -X POST http://10.0.0.31:9090/-/reload3.导入grafana模板