Meaningless Notebook

我輩は雑記帖である。名はまだない。


CentOS 7.5 に Collectd、Graphite、Grafana をセットアップする。

ル-タ-のトラフィックをグラフ化するため Collectd、Graphiteで SNMP経由でメトリクスを取得して Grafana でグラフ表示する。

手順は下記の通り。

  1. Collectd  をインスト-ル 及び 設定
  2. Graphite をインスト-ル 及び 設定
  3. Grafana  をインスト-ル 及び 設定

1.Collectd  をインスト-ル 及び 設定

1.epel リポジトリインスト-ル

yum install epel-release

2.モジュ-ルインスト-ル

下記コマンドを実行して必要なモジュ-ルをインスト-ル

yum install collectd collectd-snmp net-snmp net-snmp-utils

3.『/etc/collectd.conf』を修正する。

190 行目付近

#LoadPlugin smart
LoadPlugin snmp
#LoadPlugin snmp_agent

213 行目付近

#LoadPlugin wireless
LoadPlugin write_graphite
#LoadPlugin write_http

1296 行目付近

<Plugin snmp>
   <Data "powerplus_voltge_input">
       Type "voltage"
       Table false
       Instance "input_line1"
       Values "SNMPv2-SMI::enterprises.6050.5.4.1.1.2.1"
   </Data>
   <Data "hr_users">
       Type "users"
       Table false
       Instance ""
       Values "HOST-RESOURCES-MIB::hrSystemNumUsers.0"
   </Data>
   <Data "std_traffic">
       Type "if_octets"
       Table true
       Instance "IF-MIB::ifDescr"
       Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets"
   </Data>

   <Host "SNMP経由でメトリックスを取得する機器名">
       Address "SNMP経由でメトリックスを取得する機器の IPアドレス 又は ホスト名"
       Version 1
       Community "SNMPで読み取るコミュニティ名"
       Collect "std_traffic"
       Interval 30
       Timeout 10
       Retries 1
   </Host>
</Plugin>

1622 行目付近

<Plugin write_graphite>
  <Node "graphite">
    Host "localhost"
    Port "2003"
    Protocol "tcp"
    ReconnectInterval 0
    LogSendErrors true
    Prefix "collectd."
    Postfix ""
    StoreRates true
    AlwaysAppendDS false
    EscapeCharacter "_"
    SeparateInstances false
    PreserveSeparator false
    DropDuplicateFields false
  </Node>
</Plugin>

4.ポリシ-設定

以下のポリシ-をOnにする。

・nis_enabled
・collectd_tcp_network_connect

ポリシ-のパラメ-タ値を確認するコマンド

getsebool -a | grep キ-ワ-ド

ポリシ-のパラメ-タ値を設定するコマンド

setsebool -P ポリシ-名=on

5.SELinux にポリシ-を追加

下記コマンドでポリシ-追加。

vi collectd-rule.te
module collectd-rule 1.0;

require {
type snmpd_var_lib_t;
type collectd_t;
class dir write;
}

#============= collectd_t ==============
allow collectd_t snmpd_var_lib_t:dir write;
checkmodule -m -M -o collectd-rule.mod collectd-rule.te
semodule_package --outfile collectd-rule.pp --module collectd-rule.mod
semodule -i collectd-rule.pp

6.サ-ビス起動 及び 自動起動設定

systemctl start collectd
systemctl enable collectd

2.Graphite をインスト-ル 及び 設定

1.モジュ-ルインスト-ル

下記コマンドを実行して必要なモジュ-ルをインスト-ル

yum install graphite-web python-carbon httpd

2.『/etc/carbon/carbon.conf』を修正する。

42 行目付近

# ENABLE_LOGROTATION = False
ENABLE_LOGROTATION = True

3.『/etc/carbon/storage-schemas.conf』を修正する。

13 行目付近

[carbon]
pattern = ^carbon\.
retentions = 60:90d

[collectd]
pattern = ^collectd*
retentions = 30:90d,300:365d

[default_1min_for_1day]
pattern = .*
retentions = 60s:1d

4.『/etc/graphite-web/local_settings.py』を修正する。

13 行目付近

#SECRET_KEY = 'UNSAFE_DEFAULT'
SECRET_KEY = '生成したランダム文字列'

24 行目付近

#TIME_ZONE = 'America/Los_Angeles'
TIME_ZONE = 'Asia/Tokyo'

5.『/etc/httpd/conf.d/graphite-web.conf』を修正する。

29 行目付近

           # Require local
           Require ip 接続を許可するネットワ-クセグメント/サブネットマスク

6.ポリシ-設定

以下のポリシ-をOnにする。

・httpd_can_network_connect

ポリシ-のパラメ-タ値を確認するコマンド

getsebool -a | grep キ-ワ-ド

ポリシ-のパラメ-タ値を設定するコマンド

setsebool -P ポリシ-名=on

7.デ-タベ-ス作成

下記コマンドを実行して DB を作成する。

graphite-manage syncdb

*

対話ダイアログで 特権ユ-ザ-作成有無を問われる。

8.所有権設定

下記コマンドで DB の所有権を apache にする。

chown apache. /var/lib/graphite-web/graphite.db

9.サ-ビス起動 及び 自動起動設定

systemctl stop collectd
systemctl start carbon-cache
systemctl start httpd
systemctl start collectd
systemctl enable carbon-cache
systemctl enable httpd

10.パケットフィルタリング設定

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

3.Grafana  をインスト-ル 及び 設定

1.『/etc/yum.repos.d/grafana.repo』を作成する。

[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
enabled=1
gpgcheck=1

2.パッケ-ジアップデ-ト

下記コマンドを実行してパッケ-ジをアップデ-ト。

yum update

3.モジュ-ルインスト-ル

下記コマンドを実行して必要なモジュ-ルをインスト-ル

yum install grafana

4.サ-ビス起動 及び 自動起動設定

systemctl start grafana-server
systemctl enable grafana-server

5.パケットフィルタリング設定

firewall-cmd --add-port=3000/tcp --permanent
firewall-cmd --reload

6.Web ブラウザから初期設定をする。

Web ブラウザから『http://インスト-ルマシンの IPアドレス 又は ホスト名:3000』にアクセスしてログインする。

ユ-ザ- :admin
パスワ-ド:admin

Data Sourceに下記設定値を指定して追加する。

Type  :Graphite
URL   :http://インスト-ルマシンの IPアドレス 又は ホスト名
Access :Server(Default)

かなり試作したから記載ミスってる可能性大。

参考元を見てなんとか(ry

参考元

  1. Server World Graphite : インストール
  2. Server World Grafana : インストール
  3. ネットワークメトリクスを視覚化してみた(collectd + Graphite + Grafana)
  4. CentOS6でSNMPの設定をするとき最低限必要なもの
  5. Blue21
  6. collectdの設定方法

Amazon