导航

感谢您的阅读,预计阅读时长3min。 智客工坊出品必属精品。

引子

互联网时代,一切以互联网为核心,IT的边界被完全打开,IT系统不再是为企业内部管理提供支撑,而是为亿万互联网用户提供各种线上服务。因此,IT部门成为了互联网企业的核心,而保障线上业务持续、稳定运行,也是互联网企业的第一使命。

故障发生时,要求互联网运维能够第一时间发现问题,并快速定位问题。依靠人工巡检的传统运维管理方式严重落后,因此,自动化运维逐渐流行。这就对互联网运维工程师的开发能力提出了更高的要求,熟悉Python之类的脚本语言只是基础,玩得转各种开源监控系统,能够根据业务特点和企业需求定制开发自动化监控和告警工具。

今天我们就来一起认识一个开源监控工具——Prometheus

在开始之前,我们先来欣赏一下prometheus监控报表图:


前言

什么是Prometheus?

Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus于2016年加入了云原生计算基金会,这是继Kubernetes之后的第二个托管项目。

从全局视角了解云原生生态可以直接看CNCF全景图

特性

Prometheus的主要特性:

  • 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据
  • PromQL,一种可利用此维度的灵活的查询语言
  • 不依赖分布式存储;单服务器节点是自治的
  • 时间序列收集通过HTTP上的拉模型进行
  • 通过中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

组件

Prometheus生态系统包含多个组件,其中许多是可选的:

  • Prometheus server主服务器,它会抓取并存储时间序列数据
  • client libraries,用于检测应用程序代码
  • push gateway,一个支持短期工作的推送网关
  • 诸如HAProxy,StatsD,Graphite等服务的exporters
  • alertmanager,一个处理警报的报警器
  • 各种各样的支持工具

架构

下图说明了Prometheus的体系结构及其某些生态系统组件:


Prometheus直接或通过中介推送网关从已检测作业中删除指标,以处理短暂的作业。它在本地存储所有报废的样本,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列,或生成警报。Grafana或其他API使用者可以用来可视化收集的数据。

什么时候适合?

Prometheus可以很好地记录任何纯数字时间序列。它既适用于以机器为中心的监控,也适用于高度动态的面向服务的体系结构的监控。在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

Prometheus的设计旨在提高可靠性,使其成为中断期间要使用的系统,以使您能够快速诊断问题。每个Prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时,您可以依靠它,并且无需设置广泛的基础结构即可使用它。

什么时候不合适

Prometheus重视可靠性。即使在故障情况下,您始终可以查看有关系统的可用统计信息。如果您需要100%的准确性(例如按请求计费),则Prometheus并不是一个好的选择,因为所收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus进行其余的监视。

环境准备

环境准备

运维自动化已经不再是新鲜名词,特别是随着Devops思想的影响下,越来越多的互联网产品公司已经开始搭建属于自己的运维自动化平台,甚至个别公司已经走在了AIDevOps实践的路上。

早些年,互联网产品公司很多都要自建运维平台(财大气粗的公司),相关文章可以查看《运维自动化平台之路》,但是随着云服务的普及,云服务厂商也提供了更多运维付费服务(当然是收费的,价格也是不菲的)。比如,阿里云的日志服务,早期我们是需要自己搭建ELK的。但是,很多公司基于成本考虑,亦或是有一些自定义的需求,会选择一些开源运维系统,比如,jenkins来实现自动化部署,grafana,prometheus来做一些监控等。

本教程基于prometheus+grafana+mysqld_exporter来搭建mysql监控服务。

Prometneus服务器

  • 一台centos 7 云服务器
  • 安装Prometneus
  • 安装grafana

被监控服务器

  • 一台centos 7 云服务器,作为数据存储服务器
  • 安装了mysql数据库
  • 安装mysqld_exporter

Notes: 为了更加接近生产环境,建议选择云服务器,不要使用虚拟机。

本教程服务器配置如下:

  • Linux 服务器版本

  • 内存

  • cpu 信息

安装Docker

Prometneus服务器

上一章节,我们已经提到Prometneus服务器。

  • 一台centos 7 云服务器
  • 安装docker
  • 安装Prometneus
  • 安装grafana

我们希望在该机器上安装Prometneus和grafana,然后通过他们管理和查看监控对象的报表。呈现结果如下:



yum安装docker

我们使用docker来安装Prometneus,所以首先得安装docker。

Notes: 安装步骤最好是参照docker官网。https://docs.docker.com/engine/install/centos/

(1) 卸载本机安装的所有版本的docker,如果机器之前没有安装过docker,可以跳过这步。

 sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

(2) 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

 $ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

(3) 使用以下命令来设置稳定的仓库(这里推荐国内阿里云的源)

$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(4) 安装dokcer engin


$ sudo yum install -y docker-ce-cli

(4) 启动docker


$ sudo systemctl start docker

(5) 检测docker是否安装成功


$ sudo docker run hello-world

还可以通过检测docker是否安装成功


$ docker -v

也可以通过查看docker 状态


$ systemctl status docker

(6) 设置开机启动docker服务


$ systemctl enable docker

prometheus+grafana监控mysql最佳实践的更多相关文章

  1. prometheus+grafana监控mysql

    prometheus+grafana监控mysql 1.安装配置MySQL官方的 Yum Repository(有mysql只需设置监控账号即可) [root@localhost ~]# wget - ...

  2. [转帖]安装prometheus+grafana监控mysql redis kubernetes等

    安装prometheus+grafana监控mysql redis kubernetes等 https://www.cnblogs.com/sfnz/p/6566951.html plug 的模式进行 ...

  3. 使用Prometheus+Grafana监控MySQL实践

    一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...

  4. 技术分享 | Prometheus+Grafana监控MySQL浅析

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简介 Prometheus 一套开源的监控&报警&时间序列数据库的组合,通常 Kubernetes 中都会 ...

  5. Prometheus+Grafana监控MySQL、Redis数据库

    俗话说,没有监控的系统就是在裸奔,好的监控就是运维人员的第三只手,第三只眼.本文将使用prometheus及Grafana搭建一套监控系统来监控主机及数据库(MySQL.Redis). 1.  安装G ...

  6. Prometheus + Grafana 监控(mysql 和redis)

    1.监控MySQL(mysqld-exporter) https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/m ...

  7. 安装prometheus+grafana监控mysql redis kubernetes等

    1.prometheus安装 wget https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5 ...

  8. paip.python连接mysql最佳实践o4

    paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...

  9. cAdvisor+Prometheus+Grafana监控docker

    cAdvisor+Prometheus+Grafana监控docker 一.cAdvisor(需要监控的主机都要安装) 官方地址:https://github.com/google/cadvisor ...

随机推荐

  1. 再来认识一下 Java 序列化

    前言 在面试中,Java 序列化被问到的几率还是挺高的.所以搜集了 Java 序列化常见的问题,由浅入深的帮助大家进一步学习和理解. 序列化基础知识 什么是序列化? Java 序列化是 JDK 1.1 ...

  2. Python爬虫学习二------爬虫基本原理

    爬虫是什么?爬虫其实就是获取网页的内容经过解析来获得有用数据并将数据存储到数据库中的程序. 基本步骤: 1.获取网页的内容,通过构造请求给服务器端,让服务器端认为是真正的浏览器在请求,于是返回响应.p ...

  3. 从零学脚手架(四)---babel

    如果此篇对您有所帮助,在此求一个star.项目地址: OrcasTeam/my-cli 接下来介绍一个打包编译过程中一个极为重要的工具--babel. ES6的枷锁 细心的朋友可以知道,在之前打包编译 ...

  4. 学员和教师管理优化用例点整理v2.0

    更新记录: 更新内容 更新人 更新时间 新建 Young 2021.01.08 12:06 彭洋洋确认结果疑问 Young 2021.01.08 15:06 问题集锦 1. 购买成功页点击完成返回路径 ...

  5. 面试现场:说说char 和 varchar的区别你了解多少?

    Hi,大家好!我是白日梦!本文是MySQL专题的第 26 篇. 下文还是白日梦以自导自演的方式,围绕"说说char 和 varchar的区别你了解多少?"展开本话题.看看你能抗到第 ...

  6. Educational Codeforces Round 69 (Rated for Div. 2) D. Yet Another Subarray Problem 【数学+分块】

    一.题目 D. Yet Another Subarray Problem 二.分析 公式的推导时参考的洛谷聚聚们的推导 重点是公式的推导,推导出公式后,分块是很容易想的.但是很容易写炸. 1 有些地方 ...

  7. HDU_5414 CRB and String 【字符串】

    一.题目 CRB and String 二.分析 对于这题,读懂题意非常重要. 题目的意思是在$s$的基础上,按题目中所描述的步骤,即在$s$中任意选择一个字符$c$,在这个字符后面添加一个不等于$c ...

  8. Spring基于XML的IoC

    Maven导入Spring依赖 <dependency> <groupId>org.springframework</groupId> <artifactId ...

  9. ch1_5_2求无序序列中第k小的元素

    import java.util.Arrays; import java.util.PriorityQueue; public class ch1_5_2求无序序列中第k小的元素 { public s ...

  10. MyBatis、Spring、SpringMVC 源码下载地址

    MyBatis.Spring.SpringMVC 源码下载地址 github mybatis https://github.com/fengyu415/MyBatis-Learn.git spring ...