构建Docker容器监控系统 (1)(Cadvisor +InfluxDB+Grafana)

news2024/11/25 0:43:19

目录

Cadvisor +InfluxDB+Grafana

1. Cadvisor 

2.InfluxDB

3.Grafana

开始部署:

下载组件镜像

创建自定义网络

创建influxdb容器

创建数据库和数据库用户

 创建Cadvisor 容器

 准备测试镜像

 创建granafa容器

 访问granfana

添加数据源 Add data source

新建 Dashboard


概述:

Docker作为目前十分出色的容器管理技术,得到大量企业的青睐,在生产环境中使用Docker容器部署服务及应用的场景越来越多。所以面对日益庞大的docker服务群应用,如何具有针对性的,有效的监控也变成了企业运维人员工作需求。

容器信息采集及监控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog、Prometheus等,本次为大家分享两款比较经典的容器开源监控组合方案Cadvisor +InfluxDB+Grafana

Cadvisor +InfluxDB+Grafana

1. Cadvisor 

Cadvisor 是Google用来监测单节点资源信息的监控工具。 Cadvisor 提供了基础查询界面和http接口,方便其他组件如Grafana 、Prometheus等进行数据抓取。Cadvisor 可以对Docker主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor 使用Go语言开发,利用Linux的Cgroups获取容器的资源使用信息。

Google的Kubernetes中也默认地将其作为单节点的资源监控工具,各个节点默认会安装上Cadvisor组件。

Cadvisor 产品特点:

  1. 可以展示主机和容器两个层次的监控数据。
  2. 可以展示历史变化数据。
  3. 谷歌公司的开源产品。
  4. 监控指标齐全。
  5. 方便部署,有官方的docker镜像。
  6. 默认只在本地保存1分钟数据,可以集成InfluxDB等第三方存储使用。

由于 Cadvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 Host,这不免会让人质疑它的实用性。但 Cadvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。

我们可以把 Cadvisor  定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。

2.InfluxDB

InfluxDB是一个由InfluxData开发的开源非关系型时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。同类型的数据库产品还有Elasticsearch、Graphite等。

InfluxDB应用场景:性能监控,应用程序指标,物联网传感器数据和实时分析等的后端存储。

InfluxDB主要功能

  1. 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
  2. 可度量性:你可以实时对大量数据进行计算;
  3. 基于事件:它支持任意的事件数据;

InfluxDB主要特点

  1. 无结构(无模式):可以是任意数量的列;
  2. 支持拓展;
  3. 支持min, max, sum, count, mean, median 等一系列函数,方便统计;
  4. 原生的HTTP支持,内置HTTP API;
  5. 强大的类SQL语法;
  6. 自带管理界面,方便使用;

3.Grafana

Grafana是一个可视化面板(Dashboard)工具,有着非常漂亮的图表和布局等展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。

Grafana主要特性

  1. 灵活丰富的图形化选项;
  2. 可以混合多种风格;
  3. 支持白天和夜间模式;
  4. 支持多个数据源;

开始部署:

关闭防火墙规则

[root@agent ~]# iptables -F

[root@agent ~]# setenforce 0

[root@agent ~]#  systemctl stop firewalld

下载阿里云repo文件

[root@agent ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo

--2023-08-08 11:12:14--  http://mirrors.aliyun.com/repo/Centos-7.repo

正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 42.202.208.239, 42.202.208.240, 42.202.208.241, ...

正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|42.202.208.239|:80... 已连接。

已发出 HTTP 请求,正在等待回应... 200 OK

长度:2523 (2.5K) [application/octet-stream]

正在保存至: “Centos-7.repo”

100%[=============================================================>] 2,523       --.-K/s 用时 0.01s   

2023-08-08 11:12:15 (231 KB/s) - 已保存 “Centos-7.repo” [2523/2523])

安装依赖包

[root@agent ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

已安装:

  yum-utils.noarch 0:1.1.31-54.el7_8                                                                   

作为依赖被安装:

  libxml2-python.x86_64 0:2.9.1-6.el7_9.6              python-chardet.noarch 0:2.2.1-3.el7             

  python-kitchen.noarch 0:1.1.1-5.el7                 

完毕!

设置docker阿里镜像安装docker

[root@agent ~]#  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

已加载插件:fastestmirror

adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo

repo saved to /etc/yum.repos.d/docker-ce.repo

[root@agent ~]#  yum -y install docker-ce

已安装:

  docker-ce.x86_64 3:24.0.5-1.el7                                                                      

作为依赖被安装:

  audit-libs-python.x86_64 0:2.8.5-4.el7                checkpolicy.x86_64 0:2.5-8.el7                

  container-selinux.noarch 2:2.119.2-1.911c772.el7_8    containerd.io.x86_64 0:1.6.22-3.1.el7         

  docker-buildx-plugin.x86_64 0:0.11.2-1.el7            docker-ce-cli.x86_64 1:24.0.5-1.el7           

  docker-ce-rootless-extras.x86_64 0:24.0.5-1.el7       docker-compose-plugin.x86_64 0:2.20.2-1.el7   

  fuse-overlayfs.x86_64 0:0.7.2-6.el7_8                 fuse3-libs.x86_64 0:3.6.1-4.el7               

  libcgroup.x86_64 0:0.41-21.el7                        libsemanage-python.x86_64 0:2.5-14.el7        

  policycoreutils-python.x86_64 0:2.5-34.el7            python-IPy.noarch 0:0.75-6.el7                

  setools-libs.x86_64 0:3.3.8-4.el7                     slirp4netns.x86_64 0:0.4.3-4.el7_8            

完毕!

重启服务 开启开机自启

[root@agent ~]#  systemctl start docker

[root@agent ~]#  systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

查看版本

[root@agent ~]# docker version

Client: Docker Engine - Community

 Version:           24.0.5

 API version:       1.43

 Go version:        go1.20.6

 Git commit:        ced0996

 Built:             Fri Jul 21 20:39:02 2023

 OS/Arch:           linux/amd64

 Context:           default


Server: Docker Engine - Community

 Engine:

  Version:          24.0.5

  API version:      1.43 (minimum version 1.12)

  Go version:       go1.20.6

  Git commit:       a61e2b4

  Built:            Fri Jul 21 20:38:05 2023

  OS/Arch:          linux/amd64

  Experimental:     false

 containerd:

  Version:          1.6.22

  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca

 runc:

  Version:          1.1.8

  GitCommit:        v1.1.8-0-g82f18fe

 docker-init:

  Version:          0.19.0

  GitCommit:        de40ad0

阿里镜像加速

[root@agent ~]#  cat << END > /etc/docker/daemon.json

> {

>         "registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]

> }

> END

重载

[root@agent ~]#  systemctl daemon-reload

[root@agent ~]#  systemctl restart docker

下载组件镜像

[root@agent ~]# docker pull tutum/influxdb

Using default tag: latest

latest: Pulling from tutum/influxdb

a3ed95caeb02: Pull complete

23efb549476f: Pull complete

aa2f8df21433: Pull complete

ef072d3c9b41: Pull complete

c9f371853f28: Pull complete

a248b0871c3c: Pull complete

749db6d368d0: Pull complete

db2492acfcc3: Pull complete

b7e7d2e12d53: Pull complete

4272a53eef10: Pull complete

9b2fefdb5321: Pull complete

Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b

Status: Downloaded newer image for tutum/influxdb:latest

docker.io/tutum/influxdb:latest

[root@agent ~]# docker pull google/cadvisor

Using default tag: latest

latest: Pulling from google/cadvisor

ff3a5c916c92: Pull complete

44a45bb65cdf: Pull complete

0bbe1a2fe2a6: Pull complete

Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04

Status: Downloaded newer image for google/cadvisor:latest

docker.io/google/cadvisor:latest

[root@agent ~]#  docker pull grafana/grafana

Using default tag: latest

latest: Pulling from grafana/grafana

97518928ae5f: Pull complete

5b58818b7f48: Pull complete

d9a64d9fd162: Pull complete

4e368e1b924c: Pull complete

867f7fdd92d9: Pull complete

387c55415012: Pull complete

07f94c8f51cd: Pull complete

ce8cf00ff6aa: Pull complete

e44858b5f948: Pull complete

4000fdbdd2a3: Pull complete

Digest: sha256:18d94ae734accd66bccf22daed7bdb20c6b99aa0f2c687eea3ce4275fe275062

Status: Downloaded newer image for grafana/grafana:latest

docker.io/grafana/grafana:latest

查看镜像

[root@agent ~]# docker images

REPOSITORY        TAG       IMAGE ID       CREATED         SIZE

grafana/grafana   latest    9b957e098315   20 months ago   275MB

google/cadvisor   latest    eb1210707573   4 years ago     69.6MB

tutum/influxdb    latest    c061e5808198   6 years ago     290MB

创建自定义网络

为了把后期创建的Cadvisor+InfluxDB+Grafana这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络。

[root@agent ~]# docker network create monitor

15c66b26909c893ddf4e643070f0a8be4735429d8eb240ccfd87181e912266e7

[root@agent ~]# docker network ls

NETWORK ID     NAME      DRIVER    SCOPE

c797f68ebf72   bridge    bridge    local

ad6923a67d61   host      host      local

15c66b26909c   monitor   bridge    local

4176a96abea0   none      null      local

创建influxdb容器

[root@agent ~]#  docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb

a0010d5c535f2361b64750af6c926424ba71cacd76ab46afc301e1d7873f228d

查看容器是否启动

[root@agent ~]# docker ps -a

CONTAINER ID   IMAGE            COMMAND     CREATED          STATUS          PORTS                                                                                  NAMES

a0010d5c535f   tutum/influxdb   "/run.sh"   22 seconds ago   Up 22 seconds   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp   influxdb

 浏览器访问 http://192.168.50.50;8083

 

从上图可以看到,在Query Templates选项中提供了常用的操作模板,可根据这些模版来管理influxdb,下面我们就来

创建数据库和数据库用户

CREATE USER "root1" WITH PASSWORD '123456' WITH ALL PRIVILEGES

 

创建Cadvisor 数据库cadvisor

、用户root,用户和数据库大家可以自行随意定义,用于后期grafana的配置:

CREATE DATABASE "cadvisor"

 创建Cadvisor 容器

[root@agent ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080  --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086

14c0398f35a287001525dbae439b2850e60d03a3c3820f8fd7f2eccc750d3d80

参数说明:

  1. -d:后台运行此容器;
  2. --name:启运容器分配名字Cadvisor ;
  3. --net:把容器加入到新的网络monitor;
  4. -p:映射端口8080;
  5. --mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor 需要采集的目录文件和监控内容;
  6. -storage_driver:需要指定Cadvisor 的存储驱动、数据库主机、数据库名;
  7. google/Cadvisor :通过Cadvisor 这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;

查看Cadvisor容器

[root@agent ~]# docker ps -a

CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                                                                  NAMES

14c0398f35a2   google/cadvisor   "/usr/bin/cadvisor -…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                              cadvisor

a0010d5c535f   tutum/influxdb    "/run.sh"                 6 minutes ago   Up 2 minutes   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp   influxdb

 通过浏览器访问8080端口

 下面会看到很多详细参数  我们这里主要用它来做数据采集。

 准备测试镜像

[root@agent ~]# docker run -itd --name nginx -p 8000:80 nginx

Unable to find image 'nginx:latest' locally

latest: Pulling from library/nginx

a2abf6c4d29d: Pull complete

a9edb18cadd1: Pull complete

589b7251471a: Pull complete

186b1aaa4aa6: Pull complete

b4df32aa5a72: Pull complete

a0bcbecc962e: Pull complete

Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31

Status: Downloaded newer image for nginx:latest

a76c56a3155b4a2e69187ddeca3808d0a2b8693947847162ea6d618d1168e8c8

查看镜像是否成功创建并启动

[root@agent ~]# docker images nginx

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE

nginx        latest    605c77e624dd   19 months ago   141MB

[root@agent ~]# docker ps -l

CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                   NAMES

a76c56a3155b   nginx     "/docker-entrypoint.…"   41 seconds ago   Up 40 seconds   0.0.0.0:8000->80/tcp, :::8000->80/tcp   nginx

[root@agent ~]#  

 进入浏览器页面 点击下方

 可以看到nginx

同样可以看到nginx参数

 创建granafa容器

[root@agent ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana

c78b7f80fd41a0be87de6424d19dc260effa161961469193af94e5d6b561cdce

查看是否运行

[root@agent ~]# docker ps -l

CONTAINER ID   IMAGE             COMMAND     CREATED         STATUS         PORTS                                       NAMES

c78b7f80fd41   grafana/grafana   "/run.sh"   9 seconds ago   Up 9 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   grafana

 访问granfana

通过http://192.168.50.50:3000端口的方式访问,默认账户密码(admin/admin),首次登陆需要更新密码。

添加数据源 Add data source

找到这个图案

 找到 lnfluxDB

 

 成功

 

新建 Dashboard

如下图:

 如果前面没问题 但现在找不到nginx可以手动输入nginx

 保存

 

 查看

 OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/849851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python接口自动化之自动发送测试报告邮件

前言 ​ SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;也就是简单邮件传输协议&#xff0c;是一种提供可靠且有效电子邮件传输的协议。python的smtplib模块就提供了一种很方便的途径发送电子邮件&#xff0c;它对smtp协议进行了简单的封装。 ​ python发邮件主…

四 、Mysql 开发

四 、Mysql开发 102 可以使用MySQL直接存储文件吗&#xff1f; 可以使用 BLOB (binary large object)&#xff0c;用来存储二进制大对象的字段类型。 TinyBlob 255 值的长度加上用于记录长度的1个字节(8位) Blob 65K值的长度加上用于记录长度的2个字节(16位) MediumBlob 16M值…

AutoJS自定义悬浮菜单(附完整代码)

我们在开发Autojs脚本时&#xff0c;需要使用到悬浮窗功能来控制脚本。那么到底要如何来做呢&#xff1f;今天给大家分享一些&#xff0c;先来看看效果&#xff1a; 调整移动和贴边。 防止滑出屏幕 附上完整代码 var storage storages.create("日赚3万_短视频合集&quo…

以Java的方式将文件上传到阿里云OSS

文章目录 1. 开通对象存储服务2. 创建 AccessKey 密钥3. 通用代码实现 1. 开通对象存储服务 控制台 → 对象存储 OSS → 立即开通 Bucket列表 → 点击创建 Bucket 填写名称、地域&#xff0c;名称创建后不可修改&#xff0c;地域选择最近的&#xff0c;存储类型选择标准存储&…

OpenCV: 对“google::protobuf::internal::Release_CompareAndSwap”的未定义

解决办法&#xff1a; 需要在文件 protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h 中的以下补丁 inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value, …

Ajax-AJAX请求的不同发送方式

&#x1f954;&#xff1a;你一定能成为想要成为的人 发送AJAX请求不同方式 发送AJAX请求不同方式1、jQuery发送AJAX请求2、axios发送AJAX请求&#xff08;重点&#xff09;3、fetch发送AJAX请求 发送AJAX请求不同方式 1、jQuery发送AJAX请求 首先需要jquery的js文件&#xf…

Linux shell yes命令(不停输出换行的y)(不停输出换行的指定字符串)(脚本自动确认y)

文章目录 yes命令功能doc文档英文中文翻译完整文档 示例应用案例自动为脚本多次确认y yes命令功能 yes命令可以不断地输出换行的指定字符串&#xff0c;不加参数时&#xff0c;不断输出换行的“y”&#xff0c;有时我们需要执行一些需要用户键入“y”确认的脚本&#xff0c;但…

挖掘Java集合:深入探索List接口与HashSet

文章目录 引言LinkedList&#xff1a;双向链表的实现构造方法LinkedList中的常用方法HashSet&#xff1a;无序且唯一的集合HashSet的实现方式LinkedHashSet&#xff1a;有序且唯一可变长度参数结论 引言 在广阔的Java编程领域中&#xff0c;集合就如同宝库&#xff0c;提供了多…

Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算

笔者在近一两年接触了Clickhouse数据库&#xff0c;在项目中也进行了一些实践&#xff0c;但一直都没有一些技术文章的沉淀&#xff0c;近期打算做个系列&#xff0c;通过一些具体的场景将Clickhouse的用法进行沉淀和分享&#xff0c;供大家参考。 首先我们假设一个Clickhouse数…

python基础3——流程控制

文章目录 一、操作符1.1 比较操作符1.2 逻辑操作符1.3 成员操作符1.4 身份操作符 二、流程控制2.1 条件判断2.2 循环语句2.2.1 for循环2.2.2 while循环 2.3 continue与break语句2.4 文件操作函数 三、函数3.1 定义函数3.2 作用域3.3 闭包3.4 函数装饰器3.5 内建函数 一、操作符…

一文看懂 D类数字功放原理及应用

他V hezkz17进数字音频系统研究开发交流答疑群(课题组) D类放大器工作在开关状态&#xff0c;作为控制元件的晶体管本身消耗功率较低&#xff0c;功放的效 率就高&#xff0c;可达 90%以上&#xff0c;因此能较大地降低能源损耗&#xff0c;减小放大器体积。D 类音 频功率放大器…

面试热题(最长上升子序列)

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 输入&#xff1…

Docker容器监控(Cadvisor +Prometheus+Grafana)

环境部署&#xff0c;接着上一篇文章Docker容器部署&#xff08;Cadvisor InfluxDBGrafana&#xff09;开始 目录 1、先清理一下容器 2、部署Cadvisor 3、访问Cadvisor页面 4、部署Prometheus 5、准备配置 6、运行prometheus容器 7、访问prometheus页面 8、部署Grafan…

录屏怎么录声音?很简单,轻松操作!

“录屏的时候怎么把声音录进去呀&#xff1f;今天用手机录了一段视频&#xff0c;录完后打开却发现没有声音&#xff0c;真的服了&#xff0c;录了好久了&#xff0c;有没有人知道怎么才能录制声音呀&#xff1f;” 录屏是一种非常实用的技术&#xff0c;可以帮助我们记录屏幕…

PHPstudy配置伪静态步骤,tp5.1的框架

搜索mod_rewrite.so&#xff0c;然后去掉前面的#&#xff08;即放开注释&#xff09; 2.找到index.php 同级文件.htaccess&#xff08;没有就新建&#xff09; 这些是tp5.1自带的内容&#xff0c;把它注释掉&#xff0c;是错误的内容&#xff0c;添加下面的这段配置 #<If…

SIT1042AQ5V 供电,IO 口兼容 3.3V,±58V 总线耐压,CAN FD 待机模式总线收发器

等领域&#xff0c;支持 5Mbps 灵活数据速率 CAN FD &#xff0c;具有在总线与 CAN 协议控制器之间进行差分信号传 输的能力。 SIT1042AQ 为 SIT1042Q 芯片的升级版本&#xff0c;改善了总线信号的对称性&#xff0c;拥有更低的电磁辐射性能。 另外&#xff0c;SIT104…

ffplay数据结构分析(一)

本文为相关课程的学习记录&#xff0c;相关分析均来源于课程的讲解&#xff0c;主要学习音视频相关的操作&#xff0c;对字幕的处理不做分析 下面我们对ffplay的相关数据结构进行分析&#xff0c;本章主要是对PacketQueue的讲解 struct MyAVPacketList和PacketQueue队列 ffp…

线程池-手写线程池C++11版本(生产者-消费者模型)

本项目是基于C11的线程池。使用了许多C的新特性&#xff0c;包含不限于模板函数泛型编程、std::future、std::packaged_task、std::bind、std::forward完美转发、std::make_shared智能指针、decltype类型推断、std::unique_lock锁等C11新特性功能。 本项目有一定的上手难度。推…

浏览器是如何渲染页面的?

浏览器是如何渲染页面的&#xff1f; 当浏览器的网络线程收到 HTML 文档后&#xff0c;会产生一个渲染任务&#xff0c;并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下&#xff0c;渲染主线程取出消息队列中的渲染任务&#xff0c;开启渲染流程。 整个渲染流程分…

对员工画饼out了,领导力之我的地盘TA做主

90后的员工为什么爱离职? 我想了一年&#xff0c;才嗅到一丝隐晦的内味。因为不结婚、不生娃、不买房、不买车&#xff0c;没压力&#xff0c;骂TA还敢顶嘴。 员工动力不足&#xff0c;没有干劲&#xff0c;宁愿熬夜打游戏&#xff0c;也不愿意多加班&#xff0c;到底是工资…