使用Grafana监控Linux性能

由于对市场上出售的家用路由器感到沮丧,我们花了一些时间将Linux(在本例中为CentOS)设置为家用路由器。 从我们早期使用Linux开始,这既是一项很好的练习,又是一种怀旧之情。 在了解了自定义的基础知识之后,我们想找到一种方法来跟踪各种统计信息,例如网络流量,磁盘空间使用情况等。尊贵的Cacti当然是一种选择,但如今这种感觉已成为一种遗产。 … 我们更喜欢使用外观更现代的更新工具。 这就是把我们带到格拉法纳的原因。 这是有关如何安装的基本逐步指南。 这是基本安装,包括在同一主机上的collectd,InfluxDB和Grafana。

已收集

什么,您以为我们会立即推出Grafana? 我们需要数据来收集第一个数据,而在CentOS上收集数据的最佳方法是收集数据。

在CentOS上收集的最简单方法是通过EPEL存储库。 如果您是CentOS的新手或不熟悉Fedora EPEL仓库,那么此命令是您入门所需的全部:

yum install epel-release

既然已经启用了EPEL回购,就可以很容易地以相同的方式安装收集到的信息:

yum install collectd

EPEL中还提供了其他收集的插件,但基本足以满足我们的目的。 如果基本模块不能满足您的需求,我们鼓励您研究可用的插件。

现在已安装收集到的数据,我们需要对其进行配置以发送数据。 收集生成统计信息,但是我们必须将其安装在某个地方,以便Grafana可以使用它。

我们需要调整/etc/collectd.conf中的几个项目。 在全局部分中,取消注释主机名,BaseDir,PIDFile,PluginDir和TypesDB的行。 您需要更改主机名,但是默认值对其他所有人都适用。 它看起来应该像这样:

Hostname    "YourHostNameHere"
#FQDNLookup   true
BaseDir     "/var/lib/collectd"
PIDFile     "/var/run/collectd.pid"
PluginDir   "/usr/lib64/collectd"
TypesDB     "/usr/share/collectd/types.db"

现在我们有了应用程序的基本信息,我们需要启用我们要使用的插件。 因此,例如,我们有syslog,cpu,磁盘,接口,负载,内存和网络,请取消注释它们。 它们的默认值适用于除网络以外的所有内容。 网络模块用于将数据传输到我们的数据收集器,在本例中为InfluxDB。 网络插件将需要指向您的InfluxDB服务器。 因为在此示例中我们在本地进行所有操作,所以我们指向localhost。 它看起来应该像这样:

<Plugin network>
  Server "127.0.0.1" "8096"
</Plugin>

InfluxDB

现在我们已经完成了收集工作,我们需要配置InfluxDB将生成数据拉入收集工作。 由于InfluxDB不在EPEL中,因此我们必须将其从存储库中拉出。 下面的命令使操作变得简单:

cat <<EOF > /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/centos/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

完成后,安装yum install influxdb软件包,现在可以对其进行配置了。 在/etc/influxdb/influxdb.conf配置文件中,我们需要更改一些其他细节。

在部分 [HTTP] 您的/etc/influxdb/influxdb.conf,设置enabled = true,bind-address =“:8096”。 它看起来应该像这样:

[http]
  # Determines whether HTTP endpoint is enabled.
enabled = true

  # The bind address used by the HTTP service.
bind-address = ":8086"

然后转到部分 [[collectd]]并进行如下配置:

[[collectd]]
  enabled = true
  bind-address = ":8096"
  database = "collectd"
  typesdb = "/usr/share/collectd"

在这一点上,我们可以继续并启动两种服务,以确保它们按预期运行。 首先,让我们打开收集并确保其发送数据。 与其他服务一样,我们将为此使用系统。 在下面的示例中,您将看到所使用的命令以及正在运行的守护程序的输出 已收集

[jperr[email protected] ~]$ sudo systemctl enable collectd
[[email protected] ~]$ sudo systemctl start collectd
[[email protected] ~]$ sudo systemctl status collectd
● collectd.service - Collectd statistics daemon
   Loaded: loaded (/usr/lib/systemd/system/collectd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-02 11:22:18 PDT; 6min ago
     Docs: man:collectd(1)
           man:collectd.conf(5)
 Main PID: 18366 (collectd)
   CGroup: /system.slice/collectd.service
           └─18366 /usr/sbin/collectd

Aug 2 11:22:18 monitor collectd[18366]: plugin_load: plugin "disk" successfully loaded.
Aug 2 11:22:18 monitor collectd[18366]: plugin_load: plugin "interface" successfully loaded.
Aug 2 11:22:18 monitor collectd[18366]: plugin_load: plugin "load" successfully loaded.
Aug 2 11:22:18 monitor collectd[18366]: plugin_load: plugin "memory" successfully loaded.
Aug 2 11:22:18 monitor collectd[18366]: plugin_load: plugin "network" successfully loaded.
Aug 2 11:22:18 monitor collectd[18366]: Systemd detected, trying to signal readyness.
Aug 2 11:22:18 monitor collectd[18366]: Initialization complete, entering read-loop.
Aug 2 11:22:18 monitor systemd[1]: Started Collectd statistics daemon.

现在收集已在运行,请启动InfluxDB并确保它可以从收集的数据中收集数据。

[[email protected] ~]$ sudo systemctl enable influxdb
[[email protected] ~]$ sudo systemctl start influxdb
[[email protected] ~]$ sudo systemctl status influxdb
● 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 Sat 2017-07-29 18:28:20 PDT; 1 weeks 6 days ago
     Docs: https://docs.influxdata.com/influxdb/
 Main PID: 23459 (influxd)
   CGroup: /system.slice/influxdb.service
           └─23459 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

Aug 2 10:35:10 monitor influxd[23459]: [I] 2017-08-12T17:35:10Z SELECT mean(value) FROM collectd.autogen.cpu_value WHERE host =~ /^monitor$/ AND type_instance="interrupt" AND time > 417367h GR...) service=query
Aug 2 10:35:10 monitor influxd[23459]: [httpd] 172.20.1.40, 172.20.1.40,::1 - - [12/Aug/2017:10:35:10 -0700] "GET /query?db=collectd&epoch=ms&q=SELECT+mean%28%22value%22%29+FROM+%22load_shortte...ean%28%22value%
Aug 2 10:35:10 monitor influxd[23459]: [I] 2017-08-02T17:35:10Z SELECT mean(value) FROM collectd.autogen.cpu_value WHERE host =~ /^monitor$/ AND type_instance="nice" AND time > 417367h GROUP B...) service=query

正如我们在上面的输出中看到的那样,该服务正在运行并且正在收集数据。 从这里开始,剩下要做的就是通过Grafana提交。

格拉法纳

要安装Grafana,我们将像使用InfluxDB一样创建另一个存储库。 不幸的是,Grafana员工没有在发行版中单独保存发行版,即使我们在EL7中进行此工作,我们似乎仍在使用EL6发行版。

cat <<EOF > /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/6/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF

现在,该存储库就位并已启用,我们可以像其他操作一样安装Grafana:yum install grafana。 完成此操作后,我们就可以开始进行配置了。 对于本教程,我们将仅设置管理员用户名和密码,因为我们将对本教程和一个用户实例进行设置。 如果您想开始使用Grafana进行更多操作,我绝对建议您阅读文档。

基本配置足以完成此任务,只需取消注释本节中的admin_user和admin_password行 [security] 在/etc/grafana/grafana.ini文件中并设置您自己的值。 在这种情况下,我们使用admin / admin,因为您在示例中就是这样做的,对吗?

[security]
# default admin user, created on startup
admin_user = admin

# default admin password, can be changed before first start of grafana,  or in profile settings
admin_password = admin

使用Grafana监控Linux性能现在,您可以使用systemctl start grafana-server启动Grafana,并通过Web界面对其进行配置。 首次登录后,系统将提示您设置一些内容,包括数据源和仪表板。 由于我们都是在localhost上进行的,因此您可以在屏幕快照中作弊并使用数据源设置。 不用担心,我们快到了,只剩下很少的工作了。

如果配置了数据源,将提示您创建第一个面板。 尽管您当然可以对Grafana的首次发布感到有些恐惧。 解决此问题的简单方法是在Grafana网站上导入模板之一。 我们使用了https://grafana.com/dashboards/554。 它提供了一组不错的度量和图形,作为使用和绘制的基础。

设置完所有内容后,就该开始您的个人喜好并进行进一步的修改了。 再次,我们建议您阅读文档,因为这里有许多未描述的选项和更改。

Sidebar