Prometheus服务器、Prometheus被监控端、Grafana、监控MySQL数据库、自动发现概述、配置自动发现、Alertmanager

目录

Prometheus概述

部署Prometheus服务器

环境说明:

配置时间

安装Prometheus服务器

添加被监控端

部署通用的监控exporter

Grafana

概述

部署Grafana

展示node1的监控信息

监控MySQL数据库

配置MySQL

配置mysql exporter

配置mysql exporter

配置prometheus监控mysql

自动发现机制

概述

基于文件自动发现

修改Prometheus使用自动发现

配置web2接受Prometheus监控

Alertmanager

概述

Alertmanager特性

部署Alertmanager

部署

配置文件

Prometheus与Alertmanager对接

配置Alertmanager通过邮件发送告警


Prometheus概述

  • Prometheus是一个开源系统监控和警报工具包,最初由 SoundCloud构建。
  • 也是一款监控软件,也是一个时序数据库。Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳以及称为标签的可选键值对一起存储。
  • 主要用在容器监控方面,也可以用于常规的主机监控。
  • 使用google公司开发的go语言编写。
  • Prometheus是一个框架,可以与其他组件完美结合。

部署Prometheus服务器

环境说明:

  • Prometheus:192.168.88.5
  • web1:192.168.88.100

配置时间

# 1. 查看时区[root@prometheus ~]# timedatectl Local time: Sun 2023-01-01 11:15:11 CSTUniversal time: Sun 2023-01-01 03:15:11 UTCRTC time: Sun 2023-01-01 03:15:11Time zone: Asia/Shanghai (CST, +0800)System clock synchronized: noNTP service: inactiveRTC in local TZ: no# 2. 如果时区不正确,则改为正确的时区[root@prometheus ~]# timedatectl set-timezone Asia/Shanghai# 3. 查看时间[root@prometheus ~]# date# 4. 如果时间不正确,则改为正确的时间[root@prometheus ~]# date -s "年月日 时:分:秒"

安装Prometheus服务器

  • 拷贝Prometheus相关软件包到服务器
  • 解压即部署
[root@prometheus ~]# cd prometheus_soft/[root@prometheus prometheus_soft]# tar xf prometheus-2.37.5.linux-amd64.tar.gz [root@prometheus prometheus_soft]# mv prometheus-2.37.5.linux-amd64 /usr/local/prometheus
  • 配置文件

    • 配置文件中包含三个配置块:globalrule_filesscrape_configs
    • global块控制 Prometheus 服务器的全局配置。我们有两个选择。第一个,scrape_interval控制 Prometheus 抓取目标的频率。您可以为单个目标覆盖它。在这种情况下,全局设置是每 15 秒抓取一次。该evaluation_interval选项控制 Prometheus 评估规则的频率。Prometheus 使用规则来创建新的时间序列并生成警报。
    • rule_files块指定我们希望 Prometheus 服务器加载的任何规则的位置。现在我们还没有规则。
    • 最后一个块,scrape_configs控制 Prometheus 监控的资源。由于 Prometheus 还将有关自身的数据公开为 HTTP 端点,因此它可以抓取和监控自身的健康状况。在默认配置中,有一个名为 的作业prometheus,用于抓取 Prometheus 服务器公开的时间序列数据。该作业包含一个单一的、静态配置的目标,即localhost的9090端口。Prometheus期望度量在/metrics路径上的目标上可用,所以这个默认作业是通过 URL 抓取的:http://localhost:9090/metrics。
  • 编写服务启动文件并启动服务

[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service[Unit]Description=Prometheus Monitoring SystemAfter=network.target[Service]ExecStart=/usr/local/prometheus/prometheus \--config.file=/usr/local/prometheus/prometheus.yml \--storage.tsdb.path=/usr/local/prometheus/data/[Install]WantedBy=multi-user.target# 启动服务[root@prometheus prometheus_soft]# systemctl daemon-reload [root@prometheus prometheus_soft]# systemctl enable prometheus.service --now[root@prometheus prometheus_soft]# ss -tlnp | grep :9090LISTEN 0      128                *:9090             *:*    users:(("prometheus",pid=4396,fd=7)) 
  • 访问web页面:http://192.168.88.5:9090/

  • 查看监控自身的数据,如分配置给Prometheus运行的内存数量

添加被监控端

  • 监控方式:

    • 拉取:pull。监控端联系被监控端,采集数据
    • 推送:push。被监控端主动把数据发给监控端。在prometheus中,push的方式需要额外的组件pushgateway
  • 被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的软件)

  • exporter列表:Exporters and integrations | Prometheus

部署通用的监控exporter

  • node-exporter用于监控硬件和系统的常用指标
  • exporter运行于被监控端,以服务的形式存在。每个exporter所使用的端口号都不一样。
  • 在web1[192.168.88.100]上部署node exporter
# 1. 拷贝node_exporter到web1[root@prometheus ~]# scp prometheus_soft/node_exporter-1.5.0.linux-amd64.tar.gz 192.168.88.100:/root/# 2. 解压即部署[root@web1 ~]# tar xf node_exporter-1.5.0.linux-amd64.tar.gz [root@web1 ~]# mv node_exporter-1.5.0.linux-amd64 /usr/local/node_exporter# 3. 创建服务文件,并启动服务[root@web1 ~]# vim /usr/lib/systemd/system/node_exporter.service[Unit]Description=node_exporterAfter=network.target[Service]Type=simpleExecStart=/usr/local/node_exporter/node_exporter[Install]WantedBy=multi-user.target[root@web1 ~]# systemctl daemon-reload [root@web1 ~]# systemctl enable node_exporter.service --now[root@web1 ~]# ss -tlnp | grep :9100LISTEN 0      128                *:9100             *:*    users:(("node_exporter",pid=7371,fd=3)) 
  • 在Prometheus服务器上添加监控节点
# 1. 修改配置文件,追加以下内容。特别注意缩进[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml ...略...- job_name: "web1"static_configs:- targets: ["192.168.88.100:9100"]# 2. 重启服务[root@prometheus ~]# systemctl restart prometheus.service 
  • 查看添加结果

Grafana

概述

  • Grafana是一款开源的、跨平台的、基于web的可视化工具
  • 展示方式:客户端图表、面板插件
  • 数据源可以来自于各种源,如prometheus

部署Grafana

  • 装包、启服务
[root@prometheus ~]# yum install -y prometheus_soft/grafana-enterprise-9.3.2-1.x86_64.rpm[root@prometheus ~]# systemctl enable grafana-server.service --now
  • 初始化。访问http://192.168.88.5:3000。初始用户名和密码都是admin。第一次登陆时,要求改密码,本例中密码改为tedu.cn。如果登陆报错,请更换其他浏览器。

  • 修改主题

  • 对接Prometheus

 添加仪表盘

 查看仪表盘

展示node1的监控信息

  • grafana模板下载:Dashboards | Grafana Labs
  • 导入主机监控模板。

 

监控MySQL数据库

配置MySQL

[root@web1 ~]# yum install -y mysql-server[root@web1 ~]# systemctl enable mysqld --now[root@web1 ~]# mysqlmysql> create user dbuser1@localhost identified by '123456';mysql> grant all privileges on *.* to dbuser1@localhost;mysql> quit

配置mysql exporter

配置mysql exporter
# 1. 安装[root@prometheus ~]# scp prometheus_soft/mysqld_exporter-0.14.0.linux-amd64.tar.gz 192.168.88.100:/root/[root@web1 ~]# tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz [root@web1 ~]# mv mysqld_exporter-0.14.0.linux-amd64 /usr/local/mysqld_exporter# 2. 编写用于连接mysql服务的配置文件[root@web1 ~]# vim /usr/local/mysqld_exporter/.my.cnf[client]host=127.0.0.1port=3306user=dbuser1password=123456# 3. 创建service文件[root@web1 ~]# vim /usr/lib/systemd/system/mysqld_exporter.service[Unit]Description=mysqld_exporterAfter=network.target[Service]ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \--config.my-cnf=/usr/local/mysqld_exporter/.my.cnf[Install]WantedBy=multi-user.target[root@web1 ~]# systemctl daemon-reload[root@web1 ~]# systemctl enable mysqld_exporter.service --now
配置prometheus监控mysql
  • 修改配置文件,启动服务
# 1. 在配置文件中追加内容[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml ...略...- job_name: "mysql"static_configs:- targets: ["192.168.88.100:9104"]# 2. 重启服务[root@prometheus ~]# systemctl restart prometheus.service 
  • 查看状态

  • 在Grafana中展示数据

 

 ​​​​​

自动发现机制

概述

  • 自动发现是指Prometheus自动对节点进行监控,不需要手动一个一个去添加,和Zabbix的自动发现、自动注册一个道理
  • Prometheus有多种自动发现发现,比如file_sd_configs基于文件自动发现、基于K8S自动发现、基于openstack自动发现、基于consul自动发现等。

基于文件自动发现

  • file_sd_configs实现文件级别的自动发现
  • 使用文件自动发现功能后,Prometheus会定期检查配置文件是否有更新
  • 如果有更新的话就将新加入的节点接入监控,服务端无需重启服务
修改Prometheus使用自动发现
  • 修改Prometheus
# 1. 备份现有配置文件[root@prometheus ~]# cp /usr/local/prometheus/prometheus.yml ~# 2. 修改配置文件,删除静态配置,添加自动发现配置[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml# 将scrape_configs及以下内容修改为:21 scrape_configs:22   - job_name: "prometheus"23     file_sd_configs:24       - refresh_interval: 120s25         files:26           - /usr/local/prometheus/sd_config/*.yml# 3. 重启服务[root@prometheus ~]# systemctl restart prometheus.service 
  • web中将没有任何监控项目

  • 创建自动发现规则文件
[root@prometheus ~]# mkdir /usr/local/prometheus/sd_config[root@prometheus ~]# vim /usr/local/prometheus/sd_config/discovery.yml- targets:- 192.168.88.5:9090- 192.168.88.100:9100- 192.168.88.100:9104
  • 大概2分钟之后,刷新target web页面

配置web2接受Prometheus监控
  • 将web1的node exporter拷贝到web2
[root@web1 ~]# scp -r /usr/local/node_exporter 192.168.88.200:/usr/local/[root@web1 ~]# scp /usr/lib/systemd/system/node_exporter.service 192.168.88.200:/usr/lib/systemd/system/
  • 启服务
[root@web2 ~]# systemctl daemon-reload [root@web2 ~]# systemctl enable node_exporter.service --now
  • 修改自动发现文件
[root@prometheus ~]# vim /usr/local/prometheus/sd_config/discovery.yml - targets:- 192.168.88.5:9090- 192.168.88.100:9100- 192.168.88.100:9104- 192.168.88.200:9100
  • 大概2分钟之后,刷新target web页面

  • 在Grafana上查看结果

Alertmanager

概述

  • Prometheus服务器中的告警规则向Alertmanager发送告警。然后,Alertmanager管理这些告警,包括静默、抑制、分组以及通过电子邮件、即时消息系统和聊天平台等方法发出通知。

  • 设置告警和通知的主要步骤是:

    • 设置和配置Alertmanager
    • 配置Prometheus与Alertmanager对接
    • 在普罗米修斯中创建告警规则
  • 在Prometheus中一条告警规则主要由以下几部分组成:

    • 告警名称:用户需要为告警规则命名
    • 告警规则:告警规则实际上主要由PromQL进行定义,其实际意义是当表达式(PromQL)查询结果持续多长时间(During)后出发告警

Alertmanager特性

  • Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组,并将其路由到正确的接收方集成
  • 分组:分组将性质相似的警报分类到单个通知中。这在较大的停机期间特别有用,此时许多系统同时发生故障,数百到数千个警报可能同时发出。
  • 抑制:抑制是当某一告警发出后,可以停止重复发送由此告警引发的其它告警的机制。
  • 静默提供了一个简单的机制可以快速根据标签对告警进行静默处理。如果接收到的告警符合静默的配置, Alertmanager则不会发送告警通知。静默设置需要在Alertmanager的Web页面上进行设置。

部署Alertmanager

部署
  • 解压即部署
# 1. 解压[root@prometheus ~]# cd prometheus_soft/[root@prometheus prometheus_soft]# tar xf alertmanager-0.25.0.linux-amd64.tar.gz [root@prometheus prometheus_soft]# mv alertmanager-0.25.0.linux-amd64 /usr/local/alertmanager# 2. 编写服务文件并启动[root@prometheus prometheus_soft]# vim /usr/lib/systemd/system/alertmanager.service[Unit]Description=alertmanager System[Service]ExecStart=/usr/local/alertmanager/alertmanager \--config.file=/usr/local/alertmanager/alertmanager.yml[Install]WantedBy=multi-user.target[root@prometheus ~]# systemctl daemon-reload [root@prometheus ~]# systemctl enable alertmanager.service --now
  • 访问http://192.168.88.5:9093可以访问web配置页面

配置文件
  • Alertmanager的配置主要包含两个部分:路由(route)以及接收器(receivers)。所有的告警信息都会从配置中的顶级路由(route)进入路由树,根据路由规则将告警信息发送给相应的接收器。

  • 在Alertmanager中可以定义一组接收器,比如可以按照角色(比如系统运维,数据库管理员)来划分多个接收器。接收器可以关联邮件,Slack以及其它方式接收告警信息。

  • 目前配置文件中只设置了一个顶级路由route并且定义的接收器为default-receiver。因此,所有的告警都会发送给default-receiver。

  • 因此在Alertmanager配置中一般会包含以下几个主要部分:

    • 全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置
    • 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等
    • 告警路由(route):根据标签匹配,确定当前告警应该如何处理
    • 接收器(receivers):接收器是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook 等,接收器一般配合告警路由使用
    • 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生
Prometheus与Alertmanager对接
  • 编辑Prometheus配置文件,修改alerting配置
[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml ...略...8 alerting:9   alertmanagers:10     - static_configs:11         - targets:12           - localhost:9093...略...[root@prometheus ~]# systemctl restart prometheus.service 
  • 访问:http://192.168.88.5:9090/config,查看配置是否生效

配置Alertmanager通过邮件发送告警
# 1. 备份配置文件[root@prometheus ~]# cp /usr/local/alertmanager/alertmanager.yml ~# 2. 修改配置文件[root@prometheus ~]# vim /usr/local/alertmanager/alertmanager.yml global:smtp_from: 'zzg@tedu.cn'      # 发件人地址smtp_smarthost: 'localhost:25'   # 邮件服务器地址smtp_require_tls: false       # 是否使用TLS安全连接route:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'default-receiver'  # 接收器receivers:- name: 'default-receiver'    # 配置接收器为邮件email_configs:- to: 'root@localhost.localdomain'inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']# 3. 定义告警规则[root@prometheus ~]# mkdir /usr/local/prometheus/rules[root@prometheus ~]# vim /usr/local/prometheus/rules/hoststats-alert.rulesgroups:- name: examplerules:- alert: InstanceDownexpr: up == 0for: 5m labels:severity: warnannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."- alert: hostMemUsageAlertexpr: (node_memory_MemTotal - node_memory_MemAvailable)/node_memory_MemTotal > 0.85for: 1m labels:severity: warnannotations:summary: "Instance {{ $labels.instance }} MEM usgae high"# 4. 在Prometheus中声明规则文件位置[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml ...略...15 rule_files:16   - /usr/local/prometheus/rules/*.rules...略...# 5. 重启服务[root@prometheus ~]# systemctl restart alertmanager.service [root@prometheus ~]# systemctl restart prometheus.service # 6. 安装并启动邮件服务[root@prometheus ~]# yum install -y postfix mailx[root@prometheus ~]# systemctl enable postfix --now
  • 查看加载的规则文件

  • 测试告警。
# 1. 将web1关机[root@web1 ~]# shutdown -h now# 2. 查看邮件[root@prometheus ~]# mail>N  1 zzg@tedu.cn           Sun Jan  1 18:59 227/10404 "[FIRING:1] InstanceDown (192.168.88.200:9100 prometheus warn)"

将告警邮件内容从【<!DOCTYPE ...】这一行到【</html>】复制,粘贴到一个文件中,如文件名为alert.html,用firefox打开,可以得到以下页面:

  • 查看Alertmanager

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

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

相关文章

【java】11:IDEA常用快捷键+包

1. IDEA 常用快捷键 删除当前行, 默认是 ctrl Y 自己配置 ctrl d复制当前行, 自己配置 ctrl alt 向下光标补全代码 alt /添加注释和取消注释 ctrl / 【第一次是添加注释&#xff0c;第二次是取消注释】导入该行需要的类 先配置 auto import , 然后使用 altenter 即可快速…

Stable Diffusion 模型下载:majicMIX sombre 麦橘唯美

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

Matplotlib初探:认识数据可视化与Matplotlib

Matplotlib初探&#xff1a;认识数据可视化与Matplotlib Fig.1 利用Matplotlib进行数据可视化( 可视化代码见文末) &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;一、数据可视化简介&#x1f333;&#x1f333;二、Matplotlib库简介&#x…

汉服租赁网站:Java技术的文化应用

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

FL Studio版本升级-FL Studio怎么升级-FL Studio升级方案

已经是新年2024年了&#xff0c;但是但是依然有很多朋友还在用FL Studio12又或者FL Studio20&#xff0c;今天这篇文章教大家如何升级FL Studio21 FL Studio 21是Image Line公司开发的音乐编曲软件&#xff0c;除了软件以外&#xff0c;我们还提供了FL Studio的升级服务&#…

使用 MinIO 超级充电 TileDB 引擎

MinIO 是一个强大的主要 TileDB 后端&#xff0c;因为两者都是为性能和规模而构建的。MinIO 是一个单一的 Go 二进制文件&#xff0c;可以在许多不同类型的云和本地环境中启动。它非常轻量级&#xff0c;但也具有复制和加密等功能&#xff0c;并且提供与各种应用程序的集成。Mi…

java学习07---综合练习

飞机票 1.需求: 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 按照如下规则计算机票价格&#xff1a;旺季&#xff08;5-10月&#xff09;头等舱9折&#xff0c;经济舱8.5折&#xff0c;淡季&#xff08;11月到来年4月&#xff09;头等舱7…

浅谈jmeter性能测试步骤入门

一、Jmeter简介 1 概述 jmeter是一个软件&#xff0c;使负载测试或业绩为导向的业务&#xff08;功能&#xff09;测试不同的协议或技术。 它是 Apache 软件基金会的Stefano Mazzocchi JMeter 最初开发的。 它主要对 Apache JServ&#xff08;现在称为如 Apache Tomca…

以谷歌浏览器为例 讲述 JavaScript 断点调试操作用法

今天来说个比较实用的东西 用浏览器开发者工具 对 javaScript代码进行调试 我们先创建一个index.html 编写代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…

【报错解决】-bash: export: `-8‘: not a valid identifier 不是有效的标识符

现象 一登陆就提示-bash: export: -8’: not a valid identifier 不是有效的标识符 问题出现的原因 设置字符集时多写了空格 [rootdb1 ~]# cat >>/etc/profile<<EOF export LANGen_US.UTF -8(-8前不应有空格) EOF 解决方法 cd /etc vi profile 把export带有-8的…

如何升级至ChatGPT Plus:快速指南,ChatGPT的秘密武器GPT4.0是什么?

提到 ChatGPT。想必大家都有所耳闻。自从 2022 年上线以来&#xff0c;就受到国内外狂热的追捧和青睐&#xff0c;上线2个月&#xff0c;月活突破1个亿&#xff01;&#xff01;&#xff01; 而且还在持续上涨中。因为有很多人都在使用 ChatGPT 。无论是各大头条、抖音等 App、…

利用YOLOv8 pose estimation 进行 人的 头部等马赛克

文章大纲 马赛克几种OpenCV 实现马赛克的方法高斯模糊pose estimation 定位并模糊:三角形的外接圆与膨胀系数实现实现代码实现效果参考文献与学习路径之前写过一个文章记录,怎么对人进行目标检测后打码,但是人脸识别有个问题是,很多人的背影,或者侧面无法识别出来人脸,那…

工具 canvas 画时钟表

自己写的工具&#xff0c;代码和Auto.js有差异 importClass(android.view.MotionEvent) importClass(android.graphics.Paint) importClass(java.util.TimeZone); importClass(java.text.SimpleDateFormat); ui.layout( <vertical><text id"坐标1"/>&l…

vue-生命周期+工程化开发(三)

生命周期 Vue 生命周期 和 生命周期的四个阶段 思考&#xff1a; 什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09;什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a;一个Vue实例从 创建…

【办公类-23-02】20240212徐迟《江南小镇(南浔古镇)》“水晶晶”和景物”数量提取66个

作品展示 背景需求&#xff1a; 2024年春节前夕&#xff0c;我与家人前往浙江湖州、南浔旅行。探寻母亲、外婆外公、曾外婆的祖籍南浔的风土人情。在古镇上看到了”著名诗人“徐迟”的介绍。 母亲说&#xff1a;我的姑母就是在南浔读了小学和中学&#xff0c;她小学时的老师就…

PKI - 借助Nginx 实现Https_使用CA签发证书

文章目录 Pre概述操作步骤1. 生成 CA 密钥对2. 生成自签名的 CA 证书3. 生成服务器密钥对和证书签名请求 (CSR)4. 使用 CA 签署服务器证书 Nginx Https 自签证书1. 生成自签名证书和私钥2. 配置 Nginx 使用 CA签发的 HTTPS 证书3. 重启 Nginx 服务4. 直接访问5. 不验证证书直接…

Junit5基础教程

文章目录 一&#xff0c;导入依赖二&#xff0c;基本功能一、常用断言二、执行顺序和常用注解1、通过BeforeAll类的注解来保证顺序2、通过order注解来保证执行顺序 三、依赖测试四、参数化测试五、测试套件SelectPackages、IncludePackages、SelectClasses、IncludeTags等注解的…

Spark MLlib

目录 一、Spark MLlib简介 &#xff08;一&#xff09;什么是机器学习 &#xff08;二&#xff09;基于大数据的机器学习 &#xff08;三&#xff09;Spark机器学习库MLlib 二、机器学习流水线 &#xff08;一&#xff09;机器学习流水线概念 &#xff08;二&#xff09…

第5集《佛说四十二章经》

和尚尼慈悲、诸位法师、诸位居士&#xff0c;阿弥陀佛&#xff01; 请大家打开讲义第五面&#xff0c;第三章、割爱去贪。 蕅益大师他把《四十二章经》的内涵分成两个部分&#xff1a;第一部分是第一章、第二章的正道法门&#xff1b;其次&#xff0c;第三章之后共有四十章都…

Java图形化界面编程—— ImageIO 笔记

2.8.4 ImageIO的使用 在实际生活中&#xff0c;很多软件都支持打开本地磁盘已经存在的图片&#xff0c;然后进行编辑&#xff0c;编辑完毕后&#xff0c;再重新保存到本地磁盘。如果使用AWT要完成这样的功能&#xff0c;那么需要使用到ImageIO这个类&#xff0c;可以操作本地磁…