前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用CentOS 7上的TICK堆栈监控系统指标

如何使用CentOS 7上的TICK堆栈监控系统指标

原创
作者头像
木纸鸢
发布2018-08-01 16:31:50
2.4K0
发布2018-08-01 16:31:50
举报
文章被收录于专栏:云计算教程系列

介绍

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

  • Telegraf从各种来源收集时间序列数据。
  • InfluxDB存储时间序列数据。
  • Chronograf可视化并绘制时间序列数据。
  • Kapacitor提供警报并检测时间序列数据中的异常。

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

在本教程中,您将设置并使用此平台作为开源监视系统。当使用率过高时,您将收到电子邮件警报。

准备

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

  • 一个CentOS 7服务器,包括可以使用sudo权限的非root用户和防火墙。
  • 如果您希望按照步骤7中的说明保护Chronograf用户界面,则需要一个GitHub帐户,该帐户是GitHub组织的一部分。

第1步 - 添加TICK Stack Repository

默认情况下,包管理器无法使用TICK堆栈组件。所有TICK堆栈组件都使用相同的存储库,因此我们将设置存储库配置文件以使安装可以无缝进行。

创建这个新文件:

代码语言:txt
复制
$ sudo vi /etc/yum.repos.d/influxdata.repo

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

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

代码语言:txt
复制
[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:

代码语言:txt
复制
$ sudo yum install influxdb

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

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

代码语言:txt
复制
$ sudo systemctl start influxdb

然后确保服务正常运行:

代码语言:txt
复制
$ systemctl status influxdb

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

代码语言:txt
复制
[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控制台:

代码语言:txt
复制
$ influx

执行以下命令以创建新的管理员用户。我们将使用密码sammy_admin创建用户sammy。

代码语言:txt
复制
CREATE USER "sammy" WITH PASSWORD 'sammy_admin' WITH ALL PRIVILEGES

验证是否已创建用户:

代码语言:txt
复制
> show users

您将看到以下输出:

代码语言:txt
复制
    user  admin
    ----  -----
    sammy true

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

代码语言:txt
复制
> exit

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

代码语言:txt
复制
$ sudo vi /etc/influxdb/influxdb.conf

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

代码语言:txt
复制
...
    [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服务:

代码语言:txt
复制
$ sudo systemctl restart influxdb

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

第3步 - 安装和配置Telegraf

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

运行以下命令安装Telegraf:

代码语言:txt
复制
$ sudo yum install telegraf

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

代码语言:txt
复制
$ sudo vi /etc/telegraf/telegraf.conf

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

/etc/telegraf/telegraf.conf

代码语言:txt
复制
[[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:

代码语言:txt
复制
$ sudo systemctl start telegraf

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

代码语言:txt
复制
$ systemctl status telegraf

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

代码语言:txt
复制
 ● 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在数据库中存储了哪些测量值。使用先前配置的用户名和密码进行连接:

代码语言:txt
复制
$ influx -username 'sammy' -password 'sammy_admin'

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

代码语言:txt
复制
> show databases

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

代码语言:txt
复制
    name: databases
    name
    ----
    _internal
    telegraf

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

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

代码语言:txt
复制
> use telegraf

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

代码语言:txt
复制
> show measurements

您将看到以下输出:

代码语言:txt
复制
  name: measurements
    name
    ----
    cpu
    disk
    diskio
    kernel
    mem
    processes
    swap
    system

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

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

  • Apache
  • Cassandra
  • Docker
  • Elasticsearch
  • Graylog
  • IPtables
  • MySQL
  • PostgreSQL
  • Redis
  • SNMP
  • 等等

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

退出InfluxDB控制台:

代码语言:txt
复制
> exit

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

第4步 - 安装Kapacitor

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

运行以下命令安装Kapacitor:

代码语言:txt
复制
$ sudo yum install kapacitor

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

代码语言:txt
复制
$ sudo vi /etc/kapacitor/kapacitor.conf

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

/etc/kapacitor/kapacitor.conf

代码语言:txt
复制
# 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:

代码语言:txt
复制
$ sudo systemctl daemon-reload
$ sudo systemctl start kapacitor

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

代码语言:txt
复制
$ kapacitor list tasks

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

代码语言:txt
复制
ID                            Type      Status    Executing Databases and Retention Policies

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

第5步 - 安装和配置Chronograf

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

下载并安装最新的软件包:

代码语言:txt
复制
$ 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服务:

代码语言:txt
复制
$ sudo systemctl start chronograf

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

代码语言:txt
复制
$ sudo firewall-cmd --zone=public --permanent --add-port=8888/tcp
$ sudo firewall-cmd --reload

现在,您可以通过http://your_server_ip:8888访问Chronograf界面。

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

欢迎页面
欢迎页面

输入InfluxDB数据库的用户名和密码,然后单击“ 连接New Source”以继续。

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

系统图表
系统图表

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

配置页面
配置页面

使用默认的连接详细信息因为我们没有为Kapacitor配置用户名和密码。单击“连接Kapacitor”。一旦Kapacitor成功连接,您将看到表单下方出现“配置警报端点”部分。

Kapacitor支持多个警报端点:

  • HipChat
  • OpsGenie
  • PagerDuty
  • Sensu
  • Slack
  • SMTP
  • Talk
  • Telegram
  • VictorOps

最简单的通信方法是SMTP。在发送警报的地址填写“ 邮箱”,然后单击“保存”。您可以将其余详细信息保留为默认值。

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

第6步 - 配置警报

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

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

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

在图表上方,找到“ 负载1大于”的发送警报字段,然后输入1.0值。

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

代码语言:txt
复制
{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}

您可以将鼠标悬停在“ 模板”中的条目上,以获取每个字段的说明。

然后从“ 将此警报发送到”下拉列表中选择“Smtp”选项,并在关联字段中输入您的电子邮件地址。

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

Example message

代码语言:txt
复制
{
    "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"
}

您可以为邮件警报设置更人性化的消息。要执行此操作,请在文本框中输入您的消息,并在此处放置电子邮件正文文本占位符。

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

最后,单击右上角的“ 保存规则 ”以完成此规则的配置。

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

代码语言:txt
复制
$ dd if=/dev/zero of=/dev/null

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

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

注意:确认可以接收警报后,请务必停止dd命令。

任何人都可以登录Chronograf。让我们来限制一下。

第7步 - 使用OAuth保护Chronograf

默认情况下,任何知道运行Chronograf应用程序的服务器地址的人都可以查看数据。它适用于测试环境,但不适用于生产。Chronograf支持Google,Heroku和GitHub的OAuth身份验证。我们将通过GitHub帐户配置登录。

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

然后填写表格并提供以下详细信息:

  1. 使用Chronograf或合适的描述性名称填写应用程序名称。
  2. 请使用http://your_server_ip:8888作为主页URL
  3. 使用http://your_server_ip:8888/oauth/github/callback作为授权回调URL
  4. 单击注册应用程序以保存设置。
  5. 复制下一个屏幕上提供的客户端ID客户端密钥值。

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

代码语言:txt
复制
$ sudo vi /usr/lib/systemd/system/chronograf.service

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

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

代码语言:txt
复制
[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服务:

代码语言:txt
复制
$ sudo systemctl daemon-reload
$ sudo systemctl restart chronograf

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

结论

在本教程中,您看到了TICK如何成为用于存储,分析和可视化时间序列数据的强大工具。它有很多功能和用例,例如利用TICK搭建Docker容器可视化监控中心。 您可以通过阅读官方文档了解更多关于TICK。


参考文献:《How To Monitor System Metrics with the TICK Stack on CentOS 7》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步 - 添加TICK Stack Repository
  • 第2步 - 安装InfluxDB并配置身份验证
  • 第3步 - 安装和配置Telegraf
  • 第4步 - 安装Kapacitor
  • 第5步 - 安装和配置Chronograf
  • 第6步 - 配置警报
  • 第7步 - 使用OAuth保护Chronograf
  • 结论
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档