Мы потратили немного времени, настраивая Linux (в нашем случае, CentOS) в качестве домашнего маршрутизатора из — за фрустрации с домашними маршрутизаторами, доступными на рынке. Это было и хорошее упражнение и немного ностальгии от наших ранних дней с Linux. После того, как мы закончили знакомство с основами настройки, мы хотели найти способ для отслеживания различных статистических данных, таких как сетевой трафик, использование дискового пространства, и т. д. Почтенные Cacti, конечно, вариант, но это чувство немного наследие в наши дни. Мы предпочитаем использовать более новый инструмент с более современным видом. Это то, что привело нас к Grafana. Это основное пошаговое руководство для того, как мы установили его. Это базовая установка, которая включает в себя collectd, InfluxDB, и Grafana на том же хосте.
Что, вы думали, что мы сразу запустим 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>
Теперь, когда мы закончили с 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, мы создадим еще один репозиторий, как мы это делали с 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
Теперь вы можете начать Grafana с systemctl start grafana-server и настроить его через веб — интерфейс. После того, как вы войти в первый раз, вам будет предложено настроить несколько вещей, в том числе источник данных и приборную панель. Потому что мы делаем все это на локальном хосте, вы сможете обмануть и использовать настройки источника данных в скриншоте. Не волнуйтесь, мы почти там, и там только немного осталось сделать.
Если у вас есть настроенный источник данных, вам будет предложено создать свою первую панель. Хотя можно, конечно, сделать это, немного пугающим для первого запуска с Grafana. Простым решением этой проблемы является импорт одного из шаблонов на сайте Grafana. Мы использовали https://grafana.com/dashboards/554. Он предоставляет хорошую группу метрик и графиков в качестве основы для использования и построения.
После того как вы все настроили, уже пора начинать за ваши личные предпочтения и далее мастерить. Мы бы еще раз рекомендовали ознакомиться с документацией, потому что есть масса вариантов и изменений не описанных здесь.