使用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"

在這一點上,我們可以繼續並啟動兩種服務,以確保它們按預期運行。 首先,讓我們打開收集並確保其發送數據。 與其他服務一樣,我們將為此使用系統。 在下面的示例中,您將看到所使用的命令以及正在運行的守護程序的輸出 已收集

[[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