项目04-基于Docker的Prometheus+Grafana+AlertManager的飞书监控报警平台

news2024/11/24 4:36:12

文章目录

    • 一.项目介绍
      • 1.流程图
      • 2.拓扑图
      • 3.详细介绍
    • 二.前期准备
      • 1.项目环境
      • 2.IP划分
    • 三. 项目步骤
      • 1.ansible部署软件环境
        • 1.1 安装ansible环境
        • 1.2 建立免密通道
        • 1.3 批量部署docker
      • 2 部署nginx、MySQL以及cadvisor、exporter节点
        • 2.1 在nginx节点服务器上面配置nginx、node_exporter和cadvisor
        • 2.2 在MySQL节点服务器上面配置MySQL、mysqld-exporter和cadvisor
      • 3.安装promethues
        • 3.1 在promethues服务器上面使用docker部署promethues
        • 3.2 修改prometheus配置文件
      • 4.安装AlertManager并添加报警模板
        • 4.1 在AlertManager服务器上配置AlertManager和prometheus-webhook-feishu
        • 4.2 修改alertmanager配置文件
        • 3.4 修改prometheus配置文件,添加报警模板配置文件
      • 5.测试预警情况并部署Grafana出图
        • 5.1 在Grafana服务器上面使用docker部署Grafana
        • 5.2 测试飞书预警情况
    • 四. 项目总结
        • 1.做项目时遇到的问题
        • 2.项目心得

一.项目介绍

1.流程图

2.拓扑图

3.详细介绍

项目名称:基于Docker的Prometheus+Grafana+AlertManager的飞书监控报警平台
项目环境:CentOS7.9,Docker24.0.5,Prometheus2.47,Grafana10.1.2,AlertManager0.23,Nginx1.25.2,MySQL5.7.43、ansible 2.9.27等
项目描述:旨在构建一个高可用的监控和报警系统,基于Docker技术,结合Prometheus、Grafana和AlertManager等工具,用于监控多台服务器上的应用程序、资源使用情况以及性能数据。通过整合飞书机器人实现实时报警通知,以便及时响应并解决潜在的问题。
项目步骤:
1.提前规划好ip并建立免密通道,使用Ansible自动化批量部署docker环境
2.使用docker部署nginx和MySQL并配置cadvisor和exporter获得节点数据
3.使用docker在两台监控机器上部署Prometheus对Web服务器和MySQL服务器实时监控
4.配置AlertManager添加报警模板和使用飞书群聊机器人的密钥开启提醒服务进行预警
5.测试飞书预警情况并部署Grafana对Web服务器和MySQL服务器出图
项目心得:
1.提前规划好整个集群的架构,可以提高项目开展时效率
2.体会了自动化部署的重要性和容器化技术的好处,使组件部署和管理更加轻松
3.明白了监控与报警的关键性和重要性以及数据可视化的价值

二.前期准备

1.项目环境

CentOS7.9,Docker24.0.5,Prometheus2.47,Grafana10.1.2,AlertManager0.23,Nginx 1.25.2,MySQL5.7.43、ansible 2.9.27等

2.IP划分

准备全新的centos7.9的虚拟机,并且分配IP地址:

主机名IP
ansible192.168.98.156
promethus服务器192.168.98.155
grafana服务器192.168.98.154
alertmanager192.168.98.140
MySQL服务器192.168.98.149
nginx服务器192.168.98.136

三. 项目步骤

1.ansible部署软件环境

提前规划好ip并建立免密通道,使用Ansible自动化批量部署docker环境

1.1 安装ansible环境
[root@localhost ~]#  yum install epel-release -y
[root@localhost ~]#  yum install ansible -y
[root@localhost ~]# vim /etc/ansible/hosts
[nginx]
192.168.98.136

[mysql]
192.168.98.140

[promethus]
192.168.98.155

[grafana]
192.168.98.154

[alertmanager]
192.168.98.140
1.2 建立免密通道
[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]# cd .ssh
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub  known_hosts
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.98.136
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.98.140
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.98.155
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.98.154
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.98.140
1.3 批量部署docker

1.安装docker

[root@localhost ~]# vim onekey_install_docker.sh
#!/bin/bash

#安装yum-utils工具包
yum install yum-utils -y

#下载docker-ce.repo文件存放在/etc/yum.repos.d
yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

#安装docker-ce相关软件
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin  docker-compose-plugin  -y

#关闭firewalld防火墙服务,并且设置开机不要启动
service firewalld stop
systemctl  disable  firewalld
#临时关闭selinux
setenforce 0
#永久关闭selinux
sed -i '/^SELINUX=/ s/enforcing/disabled/'  /etc/selinux/config

#启动docker并设计开机启动
systemctl start docker
systemctl enable docker
[root@ansible ~]# vim software_install.yaml
- hosts: nginx mysql promethus grafana
  remote_user: root
  tasks:  
  - name: copy onekey_install_docker.sh     #上传onekey_install_docker.sh脚本
    copy: src=/root/onekey_install_docker.sh dest=/root/
  - name: install mysql #安装docker
    script: /root/onekey_install_docker.sh
[root@localhost ~]# ansible-playbook software_install.yaml

2 部署nginx、MySQL以及cadvisor、exporter节点

使用docker部署nginx和MySQL并配置cadvisor和exporter获得节点数据

2.1 在nginx节点服务器上面配置nginx、node_exporter和cadvisor

CAdvisor是谷歌开发的用于分析运行中容器的资源占用和性能指标的开源工具。CAdvisor是一个运行时的守护进程,负责收集、聚合、处理和输出运行中容器的信息。

Node-exporter 可以采集机器(物理机、虚拟机、云主机)的监控指标数据,能够采集到的指标包括cpu、内存、磁盘、网络、文件数等信息。

#拉取镜像
[root@localhost /]# docker pull nginx
[root@localhost /]# docker pull prom/node-exporter
[root@localhost /]# docker pull google/cadvisor
#启动nginx
[root@localhost /]# docker run --name nginx-1 -p 80:80 -d nginx
# 启动node-exporter
[root@localhost /]# docker run -d --name nginx-node --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
#启动cAdvisor采集容器
[root@localhost /]# docker run -d \
-d --name=nginx-cadvisor \
--restart always \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-p 8080:8080 \
google/cadvisor:latest

编写脚本监控nginx服务运行情况

[root@localhost ~]# vim /root/check_nginx.sh
#!/bin/bash

# 检测Nginx容器是否在运行
if docker ps | grep -q "nginx-1"; then
  docker restart nginx-node
else
  docker stop nginx-node
fi
#定义一个每分钟执行该脚本的计划任务,用来监控nginx服务器有没有挂掉
[root@localhost ~]# crontab -l
* * * * * bash /root/check_nginx.sh

输入http://192.168.98.136:8080访问,查看容器内部的情况

image-20230926112625837

输入http://192.168.98.136:9100访问,查看收集的数据

image-20230926110852535

输入http://192.168.98.136:80访问,查看nginx Web服务器

image-20230926111039903

2.2 在MySQL节点服务器上面配置MySQL、mysqld-exporter和cadvisor
#拉取镜像
[root@localhost /]# docker pull mysql:5.7.43
[root@localhost /]# docker pull prom/mysqld-exporter
[root@localhost /]# docker pull google/cadvisor
#启动mysql:5.7
[root@localhost /]# docker run --name mysql-1 -e MYSQL_ROOT_PASSWORD=123456 -d  -p 3306:3306 mysql:5.7.43
# 启动node-exporter
[root@localhost /]# docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:123456@(192.168.98.140:3306)/mysql" prom/mysqld-exporter
#启动cAdvisor采集容器
[root@localhost /]# docker run -d \
--name=mysql-cadvisor \
--restart always \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
-p 8080:8080 \
google/cadvisor:latest

输入http://192.168.98.149:8080访问,查看容器内部的情况

image-20230926145732178

输入http://192.168.98.149:9104访问,查看收集的数据

image-20230926145158019

3.安装promethues

使用docker在两台监控机器上部署Prometheus对Web服务器和MySQL服务器实时监控

3.1 在promethues服务器上面使用docker部署promethues
#拉取镜像
[root@localhost ~]# docker pull prom/prometheus
# 启动容器
[root@localhost ~]# docker run -itd --name docker_prometheus prom/prometheus

# 复制容器内部的配置文件到宿主机当前目录下的/prometheus
[root@localhost ~]# docker cp -a docker_prometheus:/etc/prometheus/ $PWD/prometheus

# 删除容器
[root@localhost ~]# docker rm -f docker_prometheus

# 启动容器 设置端口
[root@localhost ~]# docker run -itd --name docker_prometheus --restart=always -p 9090:9090 -v $PWD/prometheus:/etc/prometheus/ prom/prometheus

# docker run 运行
# --name 容器的名称
# -p 指定容器的端口映射
# -v 将本地路径映射到容器内(这样如果修改了本地的文件,只需restart容器即可在容器内生效)
# --restart  容器重启策略 no不重启,always 退出时总是重启
# prom/prometheus  选择镜像名称启动容器
#查看容器运行情况
[root@localhost ~]# docker ps|grep docker_prometheus
3.2 修改prometheus配置文件

修改prometheus配置文件/root/prometheus/prometheus.yml

#修改prometheus配置文件
[root@localhost prometheus]# vim prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["192.168.98.140:9093"] # 告警配置地址


# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "*rule.yml"  #告警通知文件信息
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node-exporter"
    static_configs:
      - targets: ["192.168.98.136:9100"]


# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node-exporter"
    static_configs:
      - targets: ["192.168.98.136:9100"]

  - job_name: "nginx-cadvisor"
    static_configs:
      - targets: ["192.168.98.136:8080"]

  - job_name: "mysqld-exporter"
    static_configs:
      - targets: ["192.168.98.149:9104"]

  - job_name: "mysql-cadvisor"
    static_configs:
      - targets: ["192.168.98.149:8080"]
[root@localhost prometheus]# docker restart docker_prometheus

输入http://192.168.98.155:9090访问,查看状态

image-20230926165147903

4.安装AlertManager并添加报警模板

配置AlertManager添加报警模板和使用飞书群聊机器人的密钥开启提醒服务进行预警

4.1 在AlertManager服务器上配置AlertManager和prometheus-webhook-feishu
#拉取镜像
[root@localhost ~]# docker pull prom/alertmanager
#启动容器
[root@localhost ~]# docker run -itd --name alertmanager prom/alertmanager
#复制容器内部的配置文件到宿主机,不用事先创建$PWD/alertmanager目录
[root@localhost ~]# docker cp -a alertmanager:/etc/alertmanager/ $PWD/alertmanager
#删除容器
[root@localhost ~]# docker rm -f alertmanager
#启动服务 设置端口9093
[root@localhost ~]# docker run -itd --name alertmanager -p 9093:9093 -v $PWD/alertmanager:/etc/alertmanager prom/alertmanager

飞书上面创建群聊,添加聊天机器人,设置关键字,获取密钥

image-20230926194741943

启用飞书群聊机器人的密钥进行预警

#拉取镜像
[root@localhost alertmanager]# docker pull javafamily/prometheus-webhook-feishu:2.3.2-SNAPSHOT
#安装容器
[root@localhost alertmanager]# docker run -d --name prom-alert-feishu -p 9094:8080 --restart=always \
-e FEISHU_TOKEN=bc55cbd2-c892-41c7-8fc1-66df876bcfc4 \
javafamily/prometheus-webhook-feishu:2.3.2-SNAPSHOT
4.2 修改alertmanager配置文件

修改alertmanager配置文件/root/alertmanager/vim alertmanager.yml

[root@localhost alertmanager]# vim alertmanager.yml
route: # 根据标签匹配,确定当前告警应该如何处理;
  group_by: ['alertname'] # 告警应该根据那些标签进行分组,不分组可以指定 ...
  group_wait: 10s # 组告警等待时间。如果有同组告警一起发出,这个是为了把更多的告警一个批次发出去
  group_interval: 10s # 同一组的多批次告警间隔多少秒后,才能发出
  repeat_interval: 5m # 重复的告警要等待多久后才能再次发出去
  receiver: 'webhook'
  routes:
  - receiver: webhook
    group_wait: 10s
    match:
      alertname: alertname

receivers: # 接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用;
- name: 'webhook'
  webhook_configs:
  - url: 'http://192.168.98.140:9094/alert/card'

inhibit_rules: # 合理设置抑制规则可以减少垃圾告警的产生 比如说当我们的主机挂了,可能引起主机上的服务,数据库,中间件等一些告警,假如说后续的这些告警相对来说没有意义,我们可以用抑制项这个功能,让PrometheUS只发出主机挂了的告警。
  - source_match: 根据label匹配源告警
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance'] # 处的集合的label,在源和目的里的值必须相等。如果该集合的内的值再源和目的里都没有,那么目的告警也会被抑制。
[root@localhost alertmanager]# docker restart alertmanager
3.4 修改prometheus配置文件,添加报警模板配置文件

3.4.2 添加报警模板配置文件

添加报警模板配置文件/root/prometheus/node-exporter-record-rule.yml和/root/prometheus/mysql-exporter-record-rule.yml

[root@localhost prometheus]# vim node-exporter-record-rule.yml
groups:
- name: nginx-alarm
  rules:
  - alert: "内存告警"
    expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 80   #正常情况下是80,这里写了5,是因为我看到真实使用是8,为了>做告警出发,写了5
    for: 5s
    labels:
      severity: warning
    annotations:
      title: "内存使用率预警"
      serviceName: "{{ $labels.serviceName }}"
      instance: "{{ $labels.instance }}"
      value: "{{ $value }}"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"
      template: "**${serviceName}**(${instance}) 内存使用率已经超过阈值 **80%**, 请及时处理!\n当前值: ${value}%"

  - alert: "CPU告警"
    expr: (1 - avg(irate(node_cpu_seconds_total{mode="idle"}[2m])) by(instance)) * 100 > 80
    for: 5s
    labels:
      severity: warning
    annotations:
      title: "CPU使用率预警"
      serviceName: "{{ $labels.serviceName }}"
      value: "{{ $value }}"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"
      template: "**${serviceName}**(${instance}) cpu使用率已经超过阈值 **80%**, 请及时处理!\n当前值: ${value}%"
      
  - alert: "磁盘告警"
    expr: 100 - (node_filesystem_free_bytes{fstype=~"tmpfs|ext4"} / node_filesystem_size_bytes{fstype=~"tmpfs|ext4"} * 100) > 5
    for: 5s
    labels:
      severity: warning
    annotations:
      title: "磁盘使用率预警"
      serviceName: "{{ $labels.serviceName }}"
      instance: "{{ $labels.instance }}"
      mountpoint: "{{ $labels.mountpoint }}"
      value: "{{ $value }}"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"
      template: "**${serviceName}**(${instance}) 服务器磁盘设备使用率超过 **90%**, 请及时处理!\n挂载点: ${mountpoint}\n当前值: ${value}%!"

  - alert: "实例存活报警"
    expr: up == 0
    for: 5s
    labels:
      severity: emergency
    annotations:
      title: "节点宕机报警"
      serviceName: "{{ $labels.serviceName }}"
      instance: "{{ $labels.instance }}"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.155:9090/targets"
      template: "节点 **${serviceName}**(${instance}) 断联, 请及时处理!"
[root@localhost prometheus]# vim mysql-exporter-record-rule.yml
groups:
- name: mysql-alarm
  rules:
  - alert: "MySql服务存活预警"
    expr: mysql_up == 0
    for: 5s
    labels:
      severity: emergency
    annotations:
      title: "MySql服务宕机报警"
      summary: "{{$labels.instance}}: 检测到 MySql服务 已停止运行!请重点关注!!!"
      description: "{{$labels.instance}}: 当前 MySql服务已停止! (当前状态mysql_up状态为:{{ $value }})"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.155:9090/targets"


  - alert: "MySql_High_QPS过高预警"
    expr: rate(mysql_global_status_questions[5m]) > 1500
    for: 5s
    labels:
      severity: warning
    annotations:
      summary: "{{$labels.instance}}: 检测到 MySql_High_QPS 过高!"
      description: "{{$labels.instance}}: 当前 MySql操作超过 1500/秒 (当前值为:{{ $value }})"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"

  - alert: " MySql连接过多预警"
    expr: rate(mysql_global_status_threads_connected[5m]) > 300
    for: 5s
    labels:
      severity: warning
    annotations:
      summary: "{{$labels.instance}}: 检测到 MySql 连接过多!"
      description: "{{$labels.instance}}: 当前 MySql连接超过 300个/秒 (当前值为:{{ $value }})"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"

  - alert: " MySql慢查询过多预警"
    expr: rate(mysql_global_status_slow_queries[5m]) > 5
    for: 5s
    labels:
      severity: warning
    annotations:
      summary: "{{$labels.instance}}: 检测到 MySql 慢查询过多!"
      description: "{{$labels.instance}}: 当前 MySql慢查询 超过 5个/秒 (当前值为:{{ $value }})"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"

  - alert: " SQL线程停止预警"
    expr: mysql_slave_status_slave_sql_running != 1
    for: 5s
    labels:
      severity: warning
    annotations:
      summary: "{{$labels.instance}}: 检测到 SQL 线程停止!请重点关注!!!"
      description: "{{$labels.instance}}: 当前 SQL线程 已停止! (当前值为:{{ $value }})"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"

  - alert: "IO线程停止预警"
    expr: mysql_slave_status_slave_io_running != 1
    for: 5s
    labels:
      severity: warning
    annotations:
      summary: "{{$labels.instance}}: 检测到 IO 线程停止!请重点关注!!!"
      description: "{{$labels.instance}}: 当前 IO线程 已停止! (当前值为:{{ $value }})"
      btn: "点击查看详情 :玫瑰:"
      link: "http://192.168.98.154:3000/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"
[root@localhost prometheus]# docker restart docker_prometheus

访问http://192.168.98.155:9090/rules,查看报警信息详细

image-20230927111612020

5.测试预警情况并部署Grafana出图

5.1 在Grafana服务器上面使用docker部署Grafana
#拉去镜像
[root@localhost ~]# docker pull grafana/grafana
# 启动grafana
[root@localhost ~]# docker run -itd --name grafana grafana/grafana

# 复制容器内部的配置文件到宿主机当前目录下的/prometheus目录下
[root@localhost ~]# docker cp -a grafana:/var/lib/grafana $PWD/grafana-storage

# 删除容器
[root@localhost ~]# docker rm -f grafana

# 添加目录权限(不添加权限不够,容器无法启动)
[root@localhost ~]# chmod -R 777 grafana-storage

# 启动容器 设置端口
[root@localhost ~]# docker run -itd --name=grafana --restart=always -p 3000:3000 -v $PWD/grafana-storage:/var/lib/grafana grafana/grafana

# docker run 运行
# --name 容器的名称
# -p 指定容器的端口映射
# -v:挂载宿主机目录和docker容器中的目录; $PWD/grafana-storage:本地宿主机绝对目录;/var/lib/grafana:容器目录(将容器目录挂载到本地)
# --restart 容器重启策略  no:不重启,always:退出时总是重启
# grafana/grafana  选择镜像名称启动容器
[root@localhost ~]# docker ps

输入http://192.168.98.154:3000访问,默认账号和密码都是admin

image-20230926104841693

选择一个模板导入promethus的数据

image-20230927163910584

5.2 测试飞书预警情况

随机停掉一个服务,观察报警效果

image-20230927164035312

重启服务

image-20230927164113878

四. 项目总结

1.做项目时遇到的问题

1.playbook部署mysql服务器时出错,原因是虚拟机内存不够
2.mysql_exporter节点起不来,需要创建授权用户!此处使用的是root用户,由于虚拟机环境不干净存留以前的MySQL服务,所以换一台新的虚拟机实现成功
3.promethus配置文件问题,AlertManager默认是关闭的,需要开启并且需要自己添加rule文件到promethus配置文件中
4.AlertManager不需要安装在所有的节点机器上面,可以单独安装也可以和Prometheus一起安装

2.项目心得

1.提前规划好整个集群的架构,可以提高项目开展时效率
2. 体会了自动化部署的重要性和容器化技术的好处,使组件部署和管理更加轻松
3. 明白了监控与报警的关键性和重要性以及数据可视化的价值

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

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

相关文章

高效批量剪辑的秘诀与技巧,虚化背景技巧在视频剪辑中的应用与创意

你是否曾经为了制作一个高质量的视频而感到烦恼&#xff1f;视频剪辑是一项繁琐的工作&#xff0c;但是使用批量剪辑工具可以让这个过程变得更加高效。今天&#xff0c;我们将向您介绍一款强大的批量剪辑工具——视频工厂&#xff0c;帮助您轻松制作高质量视频。 首先&#xff…

linux中mysql启动失败以及数据迁移

背影&#xff1a;服务启动失败&#xff1a;报错数据库连接太多导致mysql挂了 解决过程&#xff1a; 在任何部署信息都不知道的前提下&#xff08;因为是被临时拉来解决的&#xff09;&#xff1a; 1、通过【find / -name mysql】或者【whereis mysql】查找&#xff08;ps&am…

两表查询常用SQL

1、两个表&#xff1a;table_a和table_b&#xff0c;求两表的交集&#xff0c;关键字&#xff1a;INNER JOIN SELECT a.*,b.* FROM table_a AS a INNER JOIN table_b AS b ON a.idb.id&#xff1b; 2、两个表&#xff1a;table_a和table_b&#xff0c;table_a为主表&#xff0…

新旅程、新经营丨神策 2023 数据驱动大会 10 月 27-28 日北京见

以数据驱动为手段 以客户旅程为抓手 实现更好的数字化客户经营 「新旅程、新经营&#xff0c;决胜数字化」 神策 2023 数据驱动大会 报名通道正式开启 识别二维码立即报名 历经八载&#xff0c;神策数据驱动大会已成为国内数字化转型和营销科技领域的年度盛会&#xff01;本届大…

这个国庆场景下的创意数据应用,体现了数字经济时代的商业价值

在生成式AI爆火的2023年&#xff0c;数据协作和数据交换的商业价值越来越明显。大模型的训练正需要海量跨领域数据的“投喂”&#xff0c;才能真正创造商业价值涌现的奇迹。而如何在保护数据安全的前提下&#xff0c;有效发挥数据资产的商业价值&#xff0c;成为企业数字化亟需…

[异构图-论文阅读]Heterogeneous Graph Transformer

这篇论文介绍了一种用于建模Web规模异构图的异构图变换器(HGT)架构。以下是主要的要点: 摘要和引言 (第1页) 异构图被用来抽象和建模复杂系统,其中不同类型的对象以各种方式相互作用。许多现有的图神经网络(GNNs)主要针对同构图设计,无法有效表示异构结构。HGT通过设计…

【力扣2656】K个元素的最大和

&#x1f451;专栏内容&#xff1a;力扣刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接&#xff1a;K个元素的最大和 给你一个下标从 0 开始的整数数组 nums 和…

【kkFileView】源码编译打包构建镜像部署

目录 官网使用源码构建镜像k8s启动yaml参考使用介绍 官网 官网: http://kkfileview.keking.cn/zh-cn/index.html在线文档: http://kkfileview.keking.cn/zh-cn/docs/home.html源码地址: https://gitee.com/kekingcn/file-online-preview发行版下载页面: https://gitee.com/kek…

数据分析技能点-正态分布和其他变量分布

在数据驱动的世界里,了解和解释数据分布是至关重要的。不同类型的数据分布,如正态分布、二项分布和泊松分布,具有不同的特性和应用场景。这些分布不仅在统计学和数据科学中有广泛应用,而且在日常生活和商业决策中也起着关键作用。 文章目录 正态分布正态分布和偏差其他常见…

使用adb命令通过数据线操控Android手机设备屏幕

目录 第一步&#xff1a;下载并安装Android SDK Platform-Tools 第二步&#xff1a;启动adb并测试连接 第三步&#xff1a;操控手机 第一步&#xff1a;下载并安装Android SDK Platform-Tools 进入Android开发者网站上找到ADB工具包&#xff08;包含在Android SDK Platform…

最新AI智能写作系统ChatGPT源码/支持GPT4.0+GPT联网提问/支持ai绘画Midjourney+Prompt+MJ以图生图+思维导图生成

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…

没有一技之长,该如何找工作?

很负责任的告诉你&#xff0c;跟你一样有这个困惑的人真的太多了&#xff01; 而且你也会发现&#xff0c;你身边的大多数人也都很迷茫。 家庭、学历一般&#xff0c;没啥特长爱好&#xff0c;更没有拿的出手的技能。 想要告诉你的是&#xff0c;你觉得你自己一无所长&#…

基于Matlab求解2023华为杯研究生数学建模竞赛E题——出血性脑卒中临床智能诊疗建模实现步骤(附上源码+数据)

文章目录&#xff0c;源码见文末下载 背景介绍准备工作&#xff1a;处理数据第一题&#xff1a;血肿扩张风险相关因素探索建模a&#xff09;问题b&#xff09;问题 第二题&#xff1a; 血肿周围水肿的发生及进展建模&#xff0c;并探索治疗干预和水肿进展的关联关系a&#xff0…

图像的读写与保存

图像是由众多的像素值构成的&#xff0c;我们如何去操作图像呢&#xff1f; 答案就是将图像转化为数组。 OpenCV提供了这样的方法。 我们使用cv2.imread()方法读取图片&#xff0c;返回数组格式。 对于cv2.imread(filename, flags)函数参数如下&#xff1a; 参数filename&a…

Adaptive AUTOSAR CM模块介绍(二)

在Adaptive AUTOSAR CM模块介绍(一)中介绍了 AP CM模块的功能和定位&#xff0c;这一篇主要是讲解AP CM模块的ara::com API的内容&#xff1a; 为什么AUTOSAR发明了另一种通信中间件API/技术&#xff1f;在当时中间件技术有很多啊&#xff1f;在当时特别有名的中间件有&#xf…

Kerberos常用操作

​​​​​登录Kerberos: kadmin.local 使用kadmin.local命令登录 [rootmanager ~]# kadmin.local Authenticating as principal root/adminBIGDATA with password. kadmin.local: ? # 查看命令列表i Available kadmin.local requests:add_principal, addprinc, ankAdd pri…

Pikachu靶场——SSRF 服务端请求伪造

文章目录 1 SSRF 服务端请求伪造1.1 SSRF(curl)1.1.1 漏洞防御 1.2 SSRF(file_get_content)1.2.1 漏洞防御1.2.3 SSRF 防御 1 SSRF 服务端请求伪造 SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&a…

uni-sec-check内容安全unicloud公共模块,校验微信小程序文本内容安全识别和图片智能鉴黄,uniapp进阶

uni-sec-check内容安全是unicloud封装了微信小程序的免费接口&#xff0c;文本内容安全识别&#xff08;msgSecCheck&#xff09;和音视频内容安全识别&#xff08;mediaCheckAsync&#xff09;&#xff0c;如果我没选择使用uniappunicloud开发的话&#xff0c;可以轻松从插件市…

大数据分析就业班项目介绍

大数据分析就业班专业培养企业级刚需人才&#xff0c;拥有完善的独家的课程体系&#xff0c;采用项目式教学&#xff0c;专属导师全程伴学&#xff0c;最后帮助学生推荐就业。 大数据分析培训的适学人员包括&#xff1a; 1、大三大四应届学生 数学类、统计类、计算…

新增测试场景:方言

SpeechIO的所有历史文章可在语音之家网站的【声浪】-【SpeechIO专区】查看&#xff0c;评测结果数据可在语音之家&#xff08;PC端&#xff09;的【SOTA】页面查看。 官网地址&#xff1a;http://www.speechhome.com/eval 新增测试场景 另注&#xff1a;测试平台目前总计43个…