ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Четверг, 19 декабря, 2024

Мониторинг производительности Linux с Grafana

Мониторинг производительности Linux с Grafana

Мы потратили немного времени, настраивая Linux (в нашем случае, CentOS) в качестве домашнего маршрутизатора из — за фрустрации с домашними маршрутизаторами, доступными на рынке. Это было и хорошее упражнение и немного ностальгии от наших ранних дней с Linux. После того, как мы закончили знакомство с основами настройки, мы хотели найти способ для отслеживания различных статистических данных, таких как сетевой трафик, использование дискового пространства, и т. д. Почтенные Cacti, конечно, вариант, но это чувство немного наследие в наши дни. Мы предпочитаем использовать более новый инструмент с более современным видом. Это то, что привело нас к Grafana. Это основное пошаговое руководство для того, как мы установили его. Это базовая установка, которая включает в себя collectd, InfluxDB, и Grafana на том же хосте.

Мониторинг производительности Linux с Grafana

Collectd

Что, вы думали, что мы сразу запустим Grafana? Нам нужны данные, чтобы собрать первый, и самый лучший способ сделать это на CentOS, через collectd.

Самый простой способ получить collectd на CentOS, это через репозиторий Epel. Если вы новичок в CentOS или не знакомы с Fedora EPEL repo, эта команда все, что нужно для начала работы :

yum install epel-release

 

Теперь, когда EPEL repo включен, достаточно легко установить collectd таким же образом:

yum install collectd

 

Есть другие плагины collectd доступные в Epel, но основой достаточно для наших целей. Мы хотели бы призвать вас исследовать доступные плагины, если базовый модуль не отвечает вашим потребностям.

Теперь, когда установлен collectd, нам нужно настроить его для отправки данных. Collectd генерирует статистику, но мы должны установить его где-нибудь, чтобы Grafana мог использовать его.

В /etc/collectd.conf есть несколько пунктов, которые нам нужно настроить. В глобальной секции, раскомментируйте строки для Hostname, BaseDir, PIDFile, PluginDir, и TypesDB. Вам нужно изменить Hostname, но по умолчанию должно быть хорошо для всех остальных. Это должно выглядеть примерно так:

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, disk, interface, load, memory, и network, раскомментируйте их. Их значения по умолчанию хороши для всего, кроме сети. Сетевой модуль используется для передачи данных нашему сборщику данных, который в данном случае является InfluxDB. Сетевой плагин нужно будет указывать на ваш InfluxDB сервер. Потому что мы делаем все локально в этом примере, мы указываем на localhost. Он должен выглядеть следующим образом:

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

 

InfluxDB

Теперь, когда мы закончили с collectd, мы должны настроить InfluxDB, чтобы он тянул в collectd данные генерации. Поскольку 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 and 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"

 

На данный момент, мы можем идти вперед и запустить обе службычтобы убедиться, что они работают должным образом. Для начала включим collectd и убедимся, что он отправляет данные. Как и в других сервисах, для этого мы будем использовать system. В приведенном ниже примере вы увидите команды, используемые и выходные данные запущенного демона collectd.

[jperrin@monitor ~]$ sudo systemctl enable collectd
[jperrin@monitor ~]$ sudo systemctl start collectd
[jperrin@monitor ~]$ 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.

 

Теперь, когда collectd работает, запустите InfluxDB и убедитесь, что он может собрать данные из collectd.

[jperrin@monitor ~]$ sudo systemctl enable influxdb
[jperrin@monitor ~]$ sudo systemctl start influxdb
[jperrin@monitor ~]$ 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

Чтобы установить Grafana, мы создадим еще один репозиторий, как мы это делали с InfluxDB. К сожалению, люди Grafana не держат версии релиз отдельно в repo, так это выглядит, как будто мы с помощью EL6 repo, даже если мы делаем эту работу на EL7.

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

 

Мониторинг производительности Linux с GrafanaТеперь вы можете начать Grafana с systemctl start grafana-server и настроить его через веб — интерфейс. После того, как вы войти в первый раз, вам будет предложено настроить несколько вещей, в том числе источник данных и приборную панель. Потому что мы делаем все это на локальном хосте, вы сможете обмануть и использовать настройки источника данных в скриншоте. Не волнуйтесь, мы почти там, и там только немного осталось сделать.

Если у вас есть настроенный источник данных, вам будет предложено создать свою первую панель. Хотя можно, конечно, сделать это, немного пугающим для первого запуска с Grafana. Простым решением этой проблемы является импорт одного из шаблонов на сайте Grafana. Мы использовали https://grafana.com/dashboards/554. Он предоставляет хорошую группу метрик и графиков в качестве основы для использования и построения.

После того как вы все настроили,  уже пора начинать за ваши личные предпочтения и далее мастерить. Мы бы еще раз рекомендовали ознакомиться с документацией, потому что есть масса вариантов и изменений не описанных здесь.

Exit mobile version