在 Ubuntu 14.04 服务器上安装和使用 Graphite 的方法

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 在 Ubuntu 14.04 服务器上安装和使用 Graphite 的方法

介绍

收集关于您的系统和应用程序的信息可以为您提供有关基础架构、服务器和软件的决策所需的信息。

有许多不同的方法可以获取这种信息,并以便于理解的方式显示出来。其中一个应用程序就是Graphite

Graphite是一个出色的工具,用于组织和呈现从系统中收集的数据的可视化表示。它非常灵活,可以配置,以便您既可以获得详细的表示,又可以获得对您正在跟踪的指标的性能和健康状况的广泛概述的好处。

在以前的指南中,我们曾经概述了一些图形和统计信息收集应用程序,您可以将它们串联在一起,创建一个强大的系统来显示统计信息。在本指南中,我们将向您展示如何在Ubuntu 14.04服务器上设置Graphite。在将来的指南中,我们将讨论如何从collectd和Statsd向Graphite提供统计信息。

安装Graphite

要开始,我们需要下载并安装Graphite组件。如果您看过我们的图形软件介绍,您会注意到Graphite由几个组件组成:Web应用程序,称为Carbon的存储后端,以及称为whisper的数据库库。

Graphite以前安装起来相当困难。幸运的是,在Ubuntu 14.04中,我们需要的所有组件都可以在默认存储库中找到。

让我们更新本地软件包索引,然后安装必要的软件包:

sudo apt-get update
sudo apt-get install graphite-web graphite-carbon

在安装过程中,您将被询问是否希望Carbon在决定清除安装时删除数据库文件。在这里选择“否”,这样您就不会破坏您的统计信息。如果您需要重新开始,您可以随时手动删除文件(保存在var/lib/graphite/whisper中)。

安装完成后,Graphite将被安装。但是,我们需要进行一些额外的配置才能让一切正常运行。

为Django配置数据库

尽管Graphite数据本身由Carbon和whisper数据库库处理,但Web应用程序是一个Django Python应用程序,需要将其数据存储在某个地方。

默认情况下,这被配置为使用SQLite3数据库文件。然而,这些文件不如完整的关系数据库管理系统稳健,因此我们将配置我们的应用程序使用PostgreSQL。PostgreSQL对数据类型要求更严格,并且会捕获可能导致将来出现问题的异常。

安装PostgreSQL组件

我们可以通过输入以下命令来安装数据库软件和我们需要的辅助软件包:

sudo apt-get install postgresql libpq-dev python-psycopg2

这将安装数据库软件,以及Graphite将用于连接和与数据库通信的Python库。

创建数据库用户和数据库

安装完数据库软件后,我们需要为Graphite创建一个PostgreSQL用户和数据库。

我们可以使用psql命令以postgres系统用户的身份登录到交互式的PostgreSQL提示符中:

sudo -u postgres psql

现在,我们需要创建一个数据库用户帐户,Django将用它来操作我们的数据库。我们将用户称为graphite。为这个用户选择一个安全的密码:

CREATE USER graphite WITH PASSWORD '<span class="highlight">password</span>';

现在,我们可以创建一个数据库,并将我们的新用户指定为其所有者。我们也将称这个数据库为graphite,以便轻松识别它们的关联:

CREATE DATABASE graphite WITH OWNER graphite;

完成后,我们可以退出PostgreSQL会话:

\q

您可能会看到一条消息,说Postgres无法保存文件历史。这对我们来说不是问题,所以我们可以继续。

配置Graphite Web应用程序

现在,我们的数据库和用户已经准备就绪。但是,我们仍然需要修改Graphite的设置,以使用我们刚刚配置的组件。还有一些其他设置我们应该看一下。

打开Graphite Web应用程序配置文件:

sudo nano /etc/graphite/local_settings.py

首先,我们应该设置用于创建哈希时使用的密钥。取消注释SECRET_KEY参数,并将值更改为长且唯一的内容。

SECRET_KEY = '<span class="highlight">a_salty_string</span>'

接下来,我们应该指定时区。这将影响我们图表上显示的时间,因此设置它很重要。将其设置为您的时区,如此列表中“TZ”列所指定的那样。

TIME_ZONE = '<span class="highlight">America/New_York</span>'

我们还希望为保存图表数据配置身份验证。当我们同步数据库时,我们将能够创建用户帐户,但我们需要通过取消注释此行来启用身份验证:

USE_REMOTE_USER_AUTHENTICATION = True

接下来,查找DATABASES字典定义。我们要更改值以反映我们的Postgres信息。您应该更改NAMEENGINEUSERPASSWORDHOST键。

完成后,它应该看起来像这样:

DATABASES = {
    'default': {
        'NAME': '<span class="highlight">graphite</span>',
        'ENGINE': 'django.db.backends.<span class="highlight">postgresql_psycopg2</span>',
        'USER': '<span class="highlight">graphite</span>',
        'PASSWORD': '<span class="highlight">password</span>',
        'HOST': '<span class="highlight">127.0.0.1</span>',
        'PORT': ''
    }
}

红色区域是您需要更改的值。确保您将密码修改为您在Postgres中为graphite用户选择的密码。

还要确保设置HOST参数。如果将其留空,Postgres将认为您正在尝试使用对等身份验证进行连接,这在我们的情况下不会正确进行身份验证。

完成后保存并关闭文件。

同步数据库

现在我们已经填写了数据库部分,我们可以同步数据库以创建正确的结构。

您可以通过输入以下命令来执行此操作:

sudo graphite-manage syncdb

系统会要求您为数据库创建一个超级用户帐户。创建一个新用户,以便您可以登录到界面中。您可以随意命名。这将允许您保存您的图表并修改界面。

配置 Carbon

现在我们有了一个数据库,我们可以开始配置 Carbon,Graphite 存储后端。

首先,让我们启用 carbon 服务以便在启动时启动。我们可以通过打开服务配置文件来实现:

sudo nano /etc/default/graphite-carbon

这里只有一个参数,它决定了服务是否会在启动时启动。将值更改为 “true”:

CARBON_CACHE_ENABLED=true

保存并关闭文件。

接下来,打开 Carbon 配置文件:

sudo nano /etc/carbon/carbon.conf

对于我们的目的,这个文件大部分已经配置正确。然而,我们将做出一个小改变。

通过将此指令设置为 true,打开日志轮转功能:

ENABLE_LOGROTATION = True

保存并关闭文件。

配置存储模式

现在,打开存储模式文件。这告诉 Carbon 存储值的时间长度以及这些值应该有多详细:

sudo nano /etc/carbon/storage-schemas.conf

在文件中,您会找到类似以下的条目:

[carbon]

pattern = ^carbon\.

retentions = 60:90d


[default_1min_for_1day]

pattern = .*

retentions = 60s:1d


文件当前已经定义了两个部分。第一个部分用于决定如何处理来自 Carbon 本身的数据。实际上,Carbon 被配置来存储一些关于自身性能的指标。底部的定义是一个通用的定义,旨在适用于任何未被其他部分匹配的数据。它定义了一个默认策略。

方括号中的词是用于定义新定义的部分标题。在每个部分下面,有一个模式定义和一个保留策略。

模式定义是一个正则表达式,用于匹配发送到 Carbon 的任何信息。发送到 Carbon 的信息包括度量名称,这就是这个检查的内容。在第一个示例中,模式检查度量是否以字符串 “carbon.” 开头。

保留策略由一组数字定义。每组由度量间隔(记录度量的频率)、冒号和存储这些值的时间长度组成。您可以用逗号分隔多组数字。

为了演示,我们将定义一个新的模式,以匹配稍后我们将使用的测试值。

在默认部分之前,添加另一个部分用于我们的测试值。使其看起来像这样:

[test]

pattern = ^test\.

retentions = 10s:10m,1m:1h,10m:1d


这将匹配任何以 “test.” 开头的度量。它将以三种不同的详细程度存储它收集的数据。第一个存档定义(10s:10m)将每十秒创建一个数据点。它仅存储这些值十分钟。

第二个存档(1m:1h)将每分钟创建一个数据点。它将收集过去一分钟的所有数据(因为前一个存档每十秒创建一个数据点,所以会有六个数据点),并将其聚合以创建数据点。默认情况下,它通过对点进行平均值来执行此操作,但我们稍后可以调整这一点。它以这种详细程度存储数据一小时。

将要创建的最后一个存档(10m:1d)将每十分钟创建一个数据点,以相同的方式聚合数据。它将存储这些数据一天。

当我们从 Graphite 请求信息时,它将返回来自度量时间范围的最详细存档的信息。因此,如果我们要求过去五分钟的度量,将返回来自第一个存档的信息。如果我们要求过去 50 分钟的图表,数据将来自第二个存档。

完成后保存并关闭文件。

关于存储聚合方法

当 Carbon在将更详细的信息压缩为概括性数字时决定如何聚合数据的方式非常重要,如果您想要准确的度量。这适用于每次 Graphite 创建度量的较少详细版本,就像我们在上面创建的测试模式的第二个和第三个存档中一样。

如上所述,默认行为是在聚合时取平均值。这意味着,除了最详细的存档外,Carbon将对收到的数据点进行平均以创建数字。

然而,这并不总是理想的。例如,如果我们想要在各种时间段内累加事件发生的总次数,我们希望将数据点相加以创建我们的概括性数据点,而不是对它们进行平均。

我们可以在一个名为 storage-aggregation.conf 的文件中定义我们希望聚合发生的方式。从 Carbon 示例目录中复制文件到我们的 Carbon 配置目录:

sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf

在文本编辑器中打开文件:

sudo nano /etc/carbon/storage-aggregation.conf

这看起来有点类似于上一个文件。您会找到类似以下的条目:

[min]

pattern = \.min$

xFilesFactor = 0.1

aggregationMethod = min


部分名称和模式与 storage-schemas 文件完全相同。这只是一个任意名称和一个用于匹配您正在定义的度量的模式。

XFilesFactor 是一个有趣的参数,它允许您指定 Carbon 应该具有的进行聚合的最低百分比值。默认情况下,所有值都设置为 0.5,这意味着如果要创建聚合点,必须有 50% 的更详细数据点可用。

这可以用于确保您不会创建可能误代实际情况的数据点。例如,如果由于网络问题而丢弃了 70% 的数据,您可能不希望创建仅真实代表 30% 数据的数据点。

接下来定义聚合方法。可能的值包括 average、sum、last、max 和 min。它们相当直观,但非常重要。选择错误的值将导致您的数据以不正确的方式记录。正确的选择完全取决于您实际跟踪的度量是什么。

注意:重要的是要意识到,如果您发送的 Graphite 数据点的频率比最短存档间隔长度更频繁,您的一些数据将会丢失!

这是因为 Graphite 仅在从详细存档到概括存档时应用聚合。在创建详细数据点时,它仅在间隔过去时写入最近发送给它的数据。我们将在另一篇指南中讨论 StatsD,它可以通过缓存和聚合以更频繁的间隔发送的数据来帮助缓解这个问题。

完成后保存并关闭文件。

完成后,您可以通过输入以下命令来启动 Carbon:

sudo service carbon-cache start

安装和配置 Apache

为了使用 Web 界面,我们将安装和配置 Apache Web 服务器。Graphite 包含了 Apache 的配置文件,因此选择相当容易。

通过以下命令安装组件:

sudo apt-get install apache2 libapache2-mod-wsgi

安装完成后,我们应该禁用默认的虚拟主机文件,因为它与我们的新文件冲突:

sudo a2dissite 000-default

接下来,将 Graphite Apache 虚拟主机文件复制到可用站点目录:

sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available

然后通过以下命令启用虚拟主机文件:

sudo a2ensite apache2-graphite

重新加载服务以实施更改:

sudo service apache2 reload

检查 Web 界面

现在我们已经配置好了一切,可以查看 Web 界面了。

在您的 Web 浏览器中,访问服务器的域名或 IP 地址:

http://<span class="highlight">server_domain_name_or_IP</span>

您应该会看到如下所示的屏幕:

!Graphite 默认界面

在继续之前,您应该登录,以便保存可能进行的任何图形设置。单击顶部菜单栏上的 “登录” 按钮,并输入在同步 Django 数据库时配置的用户名和密码。

接下来,如果您在左侧窗格中展开 Graphite,您应该会看到一个名为 Carbon 的条目。这是您可以找到有关 Carbon 记录的数据图形的地方。单击其中的一些选项。在这里,我正在绘制有关接收的指标和更新操作指标的图形:

!Graphite Carbon 数据

现在,让我们尝试向 Graphite 发送一些数据。在执行这些步骤时,请注意,您几乎永远不会像这样向 Graphite 发送统计数据。有更好的方法来做这件事,但这将有助于演示后台发生的情况,并且还将帮助您了解 Graphite 处理数据的方式的限制。我们将在后面讨论如何通过伴随服务解决这些问题。

度量消息需要包含度量名称、值和时间戳。我们可以在我们的终端中执行此操作。让我们创建一个与我们创建的 test 存储模式匹配的值。我们还将匹配一个在聚合时将值相加的定义之一。我们将使用 date 命令来生成时间戳。输入:

echo "test.count 4 `date +%s`" | nc -q0 127.0.0.1 2003

如果您刷新页面,然后在左侧的 Graphite 树中查看,您将看到我们的新测试指标。多次发送上述命令,每次之间至少等待 10 秒。请记住,当在最小间隔内发送多个值时,Graphite 会丢弃除最后一个值之外的所有值。

现在,在 Web 界面中,告诉 Graphite 显示过去 8 分钟的数据。在测试指标的图形上,单击一个白色矩形带有绿色箭头的图标。当鼠标悬停在上面时,它将显示 “选择最近的数据”:

!Graphite 最近的数据

从弹出窗口中选择 8 分钟。单击 “更新图形” 图标以获取最新数据。您应该会看到一个几乎没有信息的图形。这是因为您只发送了一些值,每个值都是 “4”,因此没有变化。

但是,如果您查看过去 15 分钟的图形(假设您发送了几次命令,间隔大于 10 秒但小于一分钟),您应该会看到不同的情况:

!Graphite 聚合

这是因为我们的第一个存档不保存 15 分钟的数据,因此 Graphite 查看我们的第二个存档以获取渲染数据。它看起来不同,因为我们向 Graphite 发送了一个 “count” 指标,这与我们的聚合定义之一匹配。

计数聚合告诉 Graphite 在其较大的间隔内收到的值相加,而不是求平均值。正如您所看到的,我们选择的聚合方法非常重要,因为它定义了如何从更详细的点创建概括数据点。

结论

您现在已经安装并设置了 Graphite,但它在功能上仍然相当有限。我们不希望一直手动提供数据,并且希望它在最小间隔内有多个度量时不丢弃数据。我们需要伴随工具来帮助我们解决这些问题。

在下一个指南中,我们将讨论如何设置 collectd,这是一个系统统计信息收集守护程序,可用于提供 Graphite 数据并解决这些限制。在未来的指南中,我们还将介绍如何配置 StatsD 与 Graphite 以及如何更深入地使用 Graphite 界面。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
25 4
Linux系统之Ubuntu安装cockpit管理工具
|
5天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
17 1
|
9天前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
16 2
|
8天前
|
人工智能 安全 大数据
ARM 服务器上安装 OpenEuler (欧拉)
openEuler 是华为于2019年开源的操作系统,支持多种处理器架构,包括X86和鲲鹏。截至2020年底,openEuler 拥有3万社区用户、2万多个拉取请求、2000多名贡献者和7032款软件。openEuler 提供高效、稳定、安全的系统,适用于数据库、大数据、云计算和人工智能等场景。本文介绍了在神州鲲泰 R522 服务器上安装 openEuler 的详细步骤,包括下载镜像、配置 RAID 和 BIOS 设置等。
ARM 服务器上安装 OpenEuler (欧拉)
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
5天前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
|
6天前
|
域名解析 安全 网络安全
阿里云服务器WordPress环境上安装SSL证书
阿里云服务器WordPress环境上安装SSL证书
|
6天前
|
弹性计算 数据安全/隐私保护 Windows
阿里云国际版无法远程连接Windows服务器的排查方法
阿里云国际版无法远程连接Windows服务器的排查方法
|
6天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。
|
5天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程