简介

TICK 堆栈是时间序列数据库InfluxDB的开发人员的产品集合。它由以下组件组成:

  • Telegraf 从各种来源收集时间序列数据。

  • InfluxDB 存储时间序列数据。

  • Chronograf 可视化并绘制时间序列数据。

  • Kapacitor 提供警报并检测时间序列数据中的异常。

您可以单独使用这些组件中的每一个,但如果将它们一起使用,您将拥有一个可扩展的、集成的开源系统来处理时间序列数据。

在本教程中,您将设置该平台并将其用作开源监控系统。当使用率过高时,您会产生一些 CPU 使用率并收到电子邮件警报。

先决条件

在开始之前,您需要以下内容:

  • 按照CentOS 7 初始服务器设置指南设置一台 CentOS 7 服务器,包括 sudo 非 root 用户和防火墙。

  • 如果您希望按照步骤 7 中的说明保护 Chronograf 用户界面,您需要一个GitHub帐户,该帐户是 GitHub 组织的一部分。按照本教程创建 GitHub 组织。

第 1 步 - 添加 TICK 堆栈存储库

默认情况下,TICK 堆栈组件不能通过包管理器获得。所有 TICK 堆栈组件都使用相同的存储库,因此我们将设置一个存储库配置文件以使安装无缝。

创建这个新文件:

sudo vi /etc/yum.repos.d/influxdata.repo

将以下配置放入新文件中:

/etc/yum.repos.d/influxdata.repo

[influxdb]
name = InfluxData Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key

保存文件并退出编辑器。现在我们可以安装和配置 InfluxDB

第 2 步 - 安装 InfluxDB 并配置身份验证

InfluxDB 是一个开源数据库,针对时间序列数据的快速、高可用性存储和检索进行了优化。 InfluxDB 非常适合操作监控、应用程序指标和实时分析。

运行以下命令安装 InfluxDB:

sudo yum install influxdb

在安装过程中,系统会要求您导入 GPG 密钥。确认您希望导入此密钥,以便可以继续安装。

安装完成后,启动 InfluxDB 服务:

sudo systemctl start influxdb

然后确保服务正常运行:

systemctl status influxdb

您将看到以下状态,验证服务是否正在运行:

[secondary_label Output
    ● influxdb.service - InfluxDB is an open-source, distributed, time series database
       Loaded: loaded (/usr/lib/systemd/system/influxdb.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2017-02-07 13:19:31 EET; 2min 46s ago
         Docs: https://docs.influxdata.com/influxdb/
     Main PID: 14290 (influxd)

InfluxDB 正在运行,但您需要启用用户身份验证来限制对数据库的访问。让我们创建至少一个管理员用户。

启动 InfluxDB 控制台:

influx

执行以下命令创建一个新的管理员用户。我们将使用密码sammy_admin创建一个sammy用户,但您可以使用任何您想要的。

CREATE USER "sammy" WITH PASSWORD 'sammy_admin' WITH ALL PRIVILEGES

验证用户是否已创建:

show users

您将看到以下输出,验证您的用户是否已创建:

Output    user  admin
    ----  -----
    sammy true

现在用户已经存在,退出 InfluxDB 控制台:

exit

现在在编辑器中打开文件/etc/influxdb/influxdb.conf。这是 InfluxDB 的配置文件。

sudo vi /etc/influxdb/influxdb.conf

找到[http]部分,取消注释auth-enabled选项,并将其值设置为true:

/etc/influxdb/influxdb.conf

...
    [http]
      # Determines whether HTTP endpoint is enabled.
      # enabled = true
    
      # The bind address used by the HTTP service.
      # bind-address = ":8086"
    
      # Determines whether HTTP authentication is enabled.
      auth-enabled = true
...

然后保存文件,退出编辑器,重启 InfluxDB 服务:

sudo systemctl restart influxdb

现在配置了 InfluxDB,让我们安装 Telegraf,一个用于收集指标的代理。

第 3 步 - 安装和配置 Telegraf

Telegraf 是一个开源代理,它收集运行它的系统上的指标和数据,或从其他服务收集指标和数据。 Telegraf 然后将数据写入 InfluxDB 或其他输出。

运行以下命令安装 Telegraf:

sudo yum install telegraf

Telegraf 使用插件来输入和输出数据。默认输出插件用于 InfluxDB。由于我们为 IndexDB 启用了用户身份验证,我们必须修改 Telegraf 的配置文件以指定我们配置的用户名和密码。在编辑器中打开 Telegraf 配置文件:

sudo vi /etc/telegraf/telegraf.conf

找到[outputs.influxdb]部分并提供用户名和密码:

/etc/telegraf/telegraf.conf

    [[outputs.influxdb]]
      ## The full HTTP or UDP endpoint URL for your InfluxDB instance.
      ## Multiple urls can be specified as part of the same cluster,
      ## this means that only ONE of the urls will be written to each interval.
      # urls = ["udp://localhost:8089"] # UDP endpoint example
      urls = ["http://localhost:8086"] # required
      ## The target database for metrics (telegraf will create it if not exists).
      database = "telegraf" # required
    
      ...

      ## Write timeout (for the InfluxDB client), formatted as a string.
      ## If not provided, will default to 5s. 0s means no timeout (not recommended).
      timeout = "5s"
      username = "sammy"
      password = "sammy_admin"
      ## Set the user agent for HTTP POSTs (can be useful for log differentiation)
      # user_agent = "telegraf"
      ## Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
      # udp_payload = 512

保存文件,退出编辑器,然后启动 Telegraf:

sudo systemctl start telegraf

然后检查服务是否正常运行:

systemctl status telegraf

您将看到以下状态,表明 Telegraf 正在运行。

Output    ● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
       Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2017-02-07 13:32:36 EET; 3min 27s ago
         Docs: https://github.com/influxdata/telegraf
     Main PID: 14412 (telegraf)

Telegraf 现在正在收集数据并将其写入 InfluxDB。让我们打开 InfluxDB 控制台,看看 Telegraf 将哪些测量值存储在数据库中。使用您之前配置的用户名和密码进行连接:

influx -username 'sammy' -password 'sammy_admin'

登录后,执行此命令以查看可用数据库:

show databases

您将在输出中看到telegraf数据库:

Output    name: databases
    name
    ----
    _internal
    telegraf

注意:如果您没有看到telegraf数据库,请检查您配置的 Telegraf 设置,以确保您指定了正确的用户名和密码。

让我们看看 Telegraf 在该数据库中存储了什么。执行以下命令切换到 Telegraf 数据库:

use telegraf

通过执行以下命令显示 Telegraf 收集的各种测量值:

show measurements

您将看到以下输出:

Output    name: measurements
    name
    ----
    cpu
    disk
    diskio
    kernel
    mem
    processes
    swap
    system

如您所见,Telegraf 在这个数据库中收集并存储了大量信息。

Telegraf 有 60 多个输入插件。它可以从许多流行的服务和数据库中收集指标,包括:

  • 阿帕奇

  • 卡桑德拉

  • 码头工人

  • 弹性搜索

  • 灰度日志

  • IPtables

  • MySQL

  • PostgreSQL

  • 雷迪斯

  • SNMP

  • 和许多其他

您可以通过在终端窗口中运行telegraf -usage plugin-name查看每个输入插件的使用说明。

退出 InfluxDB 控制台:

exit

现在我们知道 Telegraf 正在存储测量值,让我们设置 Kapacitor 来处理数据。

第 4 步 — 安装 Kapacitor

Kapacitor 是一个数据处理引擎。它允许您插入自己的自定义逻辑来处理具有动态阈值的警报、匹配模式的指标或识别统计异常。我们将使用 Kapacitor 从 InfluxDB 读取数据,生成警报,并将这些警报发送到指定的电子邮件地址。

运行以下命令安装 Kapacitor:

sudo yum install kapacitor

在编辑器中打开 Kapacitor 配置文件:

sudo vi /etc/kapacitor/kapacitor.conf

找到[[influxdb]]部分并提供用户名和密码以连接到 InfluxDB 数据库:

/etc/kapacitor/kapacitor.conf

# Multiple InfluxDB configurations can be defined.
# Exactly one must be marked as the default.
# Each one will be given a name and can be referenced in batch queries and InfluxDBOut nodes.
[[influxdb]]
  # Connect to an InfluxDB cluster
  # Kapacitor can subscribe, query and write to this cluster.
  # Using InfluxDB is not required and can be disabled.
  enabled = true
  default = true
  name = "localhost"
  urls = ["http://localhost:8086"]
  username = "sammy"
  password = "sammy_admin"
...

保存文件,退出编辑器,然后启动 Kapacitor:

sudo systemctl daemon-reload
sudo systemctl start kapacitor

现在让我们验证 Kapacitor 是否正在运行。使用以下命令检查 Kapacitor 的任务列表:

kapacitor list tasks

如果 Kapacitor 启动并运行,您将看到一个空的任务列表,如下所示:

Output    ID                            Type      Status    Executing Databases and Retention Policies

安装和配置 Kapacitor 后,让我们安装 TICK 堆栈的用户界面组件,以便我们可以看到一些结果并配置一些警报。

第 5 步 — 安装和配置 Chronograf

Chronograf 是一个图形和可视化应用程序,它提供了可视化监控数据和创建警报和自动化规则的工具。它包括对模板的支持,并具有一个用于常见数据集的智能、预配置仪表板库。我们将配置它以连接到我们已安装的其他组件。

下载并安装最新的包:

wget https://dl.influxdata.com/chronograf/releases/chronograf-1.2.0~beta3.x86_64.rpm
sudo yum localinstall chronograf-1.2.0~beta3.x86_64.rpm

然后启动 Chronograf 服务:

sudo systemctl start chronograf

注意:如果您使用 FirewallD,请将其配置为允许连接到端口8888:

sudo firewall-cmd --zone=public --permanent --add-port=8888/tcp
sudo firewall-cmd --reload

按照教程How To Set Up a Firewall Using FirewallD on CentOS 7了解有关 FirewallD 规则的更多信息。

现在您可以通过在 Web 浏览器中访问http://your_server_ip:8888来访问 Chronograf 界面。

您将看到如下图所示的欢迎页面:

Chronograf 欢迎屏幕,带有用于连接到数据源的字段

输入 InfluxDB 数据库的用户名和密码,然后单击 Connect New Source 继续。

连接后,您将看到主机列表。单击您的服务器的主机名以打开一个仪表板,其中包含一系列关于您的主机的系统级图表,如下图所示:

服务器的仪表板

现在让我们将 Chronograf 连接到 Kapacitor 以设置警报。将鼠标悬停在左侧导航菜单中的最后一项上,然后单击 Kapacitor 打开配置页面。

配置 Kapacitor

使用默认的连接细节;我们没有为 Kapacitor 配置用户名和密码。单击连接 Kapacitor。 Kapacitor 成功连接后,您将看到 Configure Alert Endpoints 部分出现在表单下方。

Kapacitor 支持多个警报端点:

  • 肝素

  • 行动精灵

  • PagerDuty

  • 森苏

  • 松弛

  • SMTP

  • 谈话

  • 电报

  • VictorOps

最简单的通信方式是SMTP,默认选中。在 From email 字段中填写发送警报的地址,然后单击 Save。您可以将其余详细信息保留为默认值。

配置到位后,让我们创建一些警报。

第 6 步 - 配置警报

让我们设置一个简单的警报来寻找高 CPU 使用率。

将鼠标悬停在左侧导航菜单上,找到 ALERTING 部分,然后单击 Kapacitor Rules。然后单击创建新规则

在第一部分中,通过单击 telegraf.autogen 选择时间序列。然后从出现的列表中选择 system。然后选择load1。您将立即在下面的部分中看到相应的图表。

在图表上方,找到显示 Send Alert where load1 is Greater Than 的字段,然后输入1.0作为值。

然后将以下文本粘贴到 Alert Message 字段以配置警报消息的文本:

{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}

您可以将鼠标悬停在 Templates 部分中的条目上以获取每个字段的说明。

然后从 Send this Alert to 下拉列表中选择 Smtp 选项,并在相关字段中输入您的电子邮件地址。

默认情况下,您将收到 JSON 格式的消息,如下所示:

示例消息

{
    "Name":"system",
    "TaskName":"chronograf-v1-50c67090-d74d-42ba-a47e-45ba7268619f",
    "Group":"nil",
    "Tags":{
        "host":"centos-tick"
    },
    "ID":"TEST:nil",
    "Fields":{
        "value":1.25
    },
    "Level":"CRITICAL",
    "Time":"2017-03-08T12:09:30Z",
    "Message":"TEST:nil is CRITICAL value: 1.25"
}

您可以为邮件警报设置更多人类可读的消息。为此,请在带有 Put email body text here 占位符的文本框中输入您的消息。

您可以通过单击页面左上角的名称并输入新名称来重命名此规则。

最后,点击右上角的保存规则,完成此规则的配置。

要测试这个新创建的警报,请使用dd命令从/dev/zero读取数据并将其发送到/dev/null,从而创建 CPU 峰值:

dd if=/dev/zero of=/dev/null

让命令运行几分钟,这应该足以创建一个尖峰。您可以随时按CTRL+C停止该命令。

一段时间后,您将收到一封电子邮件。此外,您可以通过单击 Chronograf 用户界面左侧导航菜单中的警报历史记录来查看所有警报。

注意:确认可以接收警报后,请务必停止以CTRL+C开头的dd命令。

我们正在运行警报,但任何人都可以登录 Chronograf。让我们限制访问。

第 7 步 — 使用 OAuth 保护 Chronograf

默认情况下,任何知道运行 Chronograf 应用程序的服务器地址的人都可以查看任何数据。测试环境可以接受,但生产环境不行。 Chronograf 支持 Google、Heroku 和 GitHub 的 OAuth 身份验证。我们将配置通过GitHub帐户登录,因此您需要一个帐户才能继续。

首先,在 GitHub 上注册一个新应用程序。登录您的 GitHub 帐户并导航到https://github.com/settings/applications/new。

然后使用以下详细信息填写表格:

  1. 使用 Chronograf 或合适的描述性名称填写 Application name

  2. 对于主页 URL,使用http://your_server_ip:8888

  3. 授权回调地址填写http://your_server_ip:8888/oauth/github/callback

  4. 点击注册应用保存设置。

  5. 复制下一个屏幕上提供的 Client IDClient Secret 值。

接下来,编辑 Chronograf 的 systemd 脚本以启用身份验证。打开文件/usr/lib/systemd/system/chronograf.service:

sudo vi /usr/lib/systemd/system/chronograf.service

然后找到[Service]部分并编辑以ExecStart=开头的行:

/usr/lib/systemd/system/chronograf.service

[Service]
User=chronograf
Group=chronograf
ExecStart=/usr/bin/chronograf --host 0.0.0.0 --port 8888 -b /var/lib/chronograf/chronograf-v1.db -c /usr/share/chronograf/canned -t 'secret_token' -i 'your_github_client_id' -s 'your_github_client_secret' -o 'your_github_organization'
KillMode=control-group
Restart=on-failure

所有 OAuth 提供程序都需要secret_token。将其设置为随机字符串。使用您的 Github 客户端 ID、Github 客户端密码和 Github 组织作为其他值。

警告:如果您在命令中省略 Github 组织选项,任何 Github 用户都可以登录到您的 Chronograf 实例。创建一个 Github 组织并将适当的用户添加到该组织以限制访问。

保存文件,退出编辑器,重启 Chronograf 服务:

sudo systemctl daemon-reload
sudo systemctl restart chronograf

打开http://your_server_ip:8888以访问 Chronograf 界面。这次你会看到一个 Login with Github 按钮。单击按钮登录,系统会要求您允许该应用程序访问您的 Github 帐户。允许访问后,您将登录。

结论

在本教程中,您了解了 TICK 堆栈如何成为存储、分析和可视化时间序列数据的强大工具。它具有许多功能和用例。例如,您可以使用 Kapacitor 执行异常检测或构建游戏分数的实时排行榜。您可以通过阅读官方文档了解更多关于 TICK 堆栈的信息。

Logo

CentOS社区为您提供最前沿的新闻资讯和知识内容

更多推荐