仮想環境eve-ng上でのPrometheus、GrafanaのDeploy

久しぶりに実験をしているのでまとめていきます。

対象は、eve-ng上でのPrometheus、GrafanaのDeploy検証です。

(1)eve-ng起動画面


(2)RockyLinuxイメージは「Rocky-9.4-x86_64-minimal.iso」を利用


CPU、メモリーは変更 2コア→4コア、メモリは4096→8192へ増量
コンソールは仮想ネットワーク vnc(デフォルト)を使用

(3)RockyLinux~実環境間の接続

コミュニティ版のeveですので事前にネットワークと接続しておきます。

(4)Netの設定

ネットワークの設定は以下になります。自宅環境からインターネットに出る必要が有りますのでManagement(Cloud0)を利用します。


(5)自宅仮想ラボ内にRockyLinuxをDeployしたときの状況


クラウドラボなどと同じなのであまりカッコいいものではないですがまぁ、Eve-ngでよくある風景です。


RockeyLinuxの起動
Startボタンで装置が起動します。

起動状況やコンソールを確認するときは対象のLinuxなどの機器をダブルクリックすることで以下の画面が出てきて確認可能です。「ultravnc_wrapper.bat」を開くを選択する。



2.RockyLinuxのインストール

(1)RockyLinuxインストール中の画面1

 早く終わらせたい人は、「Enter」を押下


(2)インストール時の言語選択

(3)インストールの概要

赤文字の入力が最低必要、IPアドレスが決まっている場合「ネットワークとホスト名」も入力がお薦め

(4)rootパスワードの設定

(5)インストール先ディスクの設定

(6)対象サーバのIPアドレス設定


インストール後にnmtuiコマンドでも設定できますが、GUIで設定したほうが簡単ですのでこちらで設定します。
色々試してみたのですが、Eve-ngデフォルトのGUIVNCの場合、「コロンが打てない問題」というのが有ります。

コロンが打てないわけではないのですが、loadkeys usにする必要があるのでいろいろ余計なことを考えない様にします。
viなどのエディタで終了させるときに「:」を使うのですがその為にキーボードを変えるのが大変という理由です。

(7)IPv4アドレスを固定するときは以下のIPv4内を変更


インストール完了の画面

3.Dockerのインストール

Teratermから環境インストール

(1)起動後TeratermからIPアドレス確認

# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    altname enp0s3
    inet 192.168.73.153/24 brd 192.168.73.255 scope global dynamic noprefixroute ens3
       valid_lft 1632sec preferred_lft 1632sec

(2)必要なパッケージのインストール

Rocky Linux 8用のDockerパッケージのリポジトリを登録

# dnf install -y yum-utils
ocky Linux 9 - BaseOS                          1.4 MB/s | 2.3 MB     00:01
Rocky Linux 9 - AppStream                       3.0 MB/s | 8.0 MB     00:02
Rocky Linux 9 - Extras                           12 kB/s |  15 kB     00:01
Dependencies resolved.
など

(3)リポジトリの設定

# dnf config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repoAdding repo from: https://download.docker.com/linux/centos/docker-ce.repo

(4)インストールするパッケージとバージョンの確認

# dnf list docker-ce.x86_64 --showduplicates
Docker CE Stable - x86_64                       136 kB/s |  58 kB     00:00
Available Packages
docker-ce.x86_64                3:20.10.15-3.el9                docker-ce-stable
docker-ce.x86_64                3:20.10.16-3.el9                docker-ce-stable
など

(5)Dockerパッケージのインストール

 #sudo  dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

(6)Dockerのバージョンの確認方法

# docker compose versionDocker
 Compose version v2.29.7

(7)Dockerの起動

[root@localhost ~]# systemctl enable --now docker
 Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@localhost ~]# systemctl is-active docker
active
[root@localhost ~]#

(8)Dockerアカウントの作成

DockerHUBのURL
 https://hub.docker.com

下記URL sign upからアカウント作成が可能


(8)Dcoker HUBへのログイン

「Login Succeeded 」が表示されたらDockerHUBにログインできています。

[root@localhost ~]# docker login -u XXXXXX
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded パスワード入力
[root@localhost ~]#

(8)Dcoker HUBへのログイン

Last login: Sat Sep 28 15:17:29 2024 from 192.168.73.1
# useradd -m XXXXXX
# echo "パスワード!" | passwd XXXXXX --stdin
Changing password for user XXXXXX.
passwd: all authentication tokens updated successfully.
#

4.Prometheus導入

(1)Prometheusのダウンロードとインストール

 「https://prometheus.io/docs/prometheus/latest/installation/」よりPrometheusのダウンロード実施

# docker run -p 9090:9090 prom/prometheus
Unable to find image 'prom/prometheus:latest' locally
latest: Pulling from prom/prometheus
9fa9226be034: Pull complete
続く

(2)Dockerで稼働中のプロセスを確認する方法

# docker ps -a
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                      PORTS     NAMES
c6d2a4003211   prom/prometheus   "/bin/prometheus --c…"   10 minutes ago   Exited (2) 10 minutes ago             peaceful_pasteur

(3)コンテナを停止するコマンド

# docker rm -f peaceful_pasteur

その他Dockerプロセスの再起動方法

docker stop prometheus 
docker rm prometheus

(4)prometheus.ymlの作成

# pwd
/home/xxxxxx
# vi prometheus.yml

ymlファイルのネタ


# vi prometheus.ymlの中身

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets:
          - 'localhost:9090'  # Prometheus自体のアドレス

  - job_name: 'snmp'
    static_configs:
      - targets:
          - 'localhost:9116'  # SNMP Exporterのアドレス

(5)Prometheusの開始

以下の場合起動ログが大量に表示
# docker run \
    -p 9090:9090 \
    -v /home/xxxxxx/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
==
以下のようなログが表示
ts=2024-09-28T10:50:32.721Z caller=main.go:601 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2024-09-28T10:50:32.721Z caller=main.go:645 level=info msg="Starting Prometheus Server" mode=server version="(version=2.54.1, branch=HEAD, revision=e6cfa720fbe6280153fab13090a483dbd40bece3)"
==
「-d」をつけることで非表示化する
[root@localhost xxxxxx]# docker run -d \
    -p 9090:9090 \
    -v /home/XXXXXX/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
以下の1行のみ表示
9346f1292af60dc7706251b7dd155f35afeeb4b31f5c48dfca558dc7c7162a0d

(6)Prometheusの起動確認

http://192.168.73.153:9090(192.168.73.153は、ホストアドレスのIP+ポート番号9090で確認)で起動確認

(7)snmp監視の実装

1. SNMP Exporterのインストール

まず、Prometheusのエクスポーターとして SNMP Exporter をインストールします。SNMP対応機器から情報を収集し、それをPrometheusのメトリクス形式で提供します。

# docker run -d \
  --name snmp_exporter \
  -p 9116:9116 \
  prom/snmp-exporter
Unable to find image 'prom/snmp-exporter:latest' locally
latest: Pulling from prom/snmp-exporter
9fa9226be034: Already exists
1617e25568b2: Already exists
7689a109356e: Pull complete
8f2db341f5fa: Pull complete
Digest: sha256:7ae8ae635e5ff445d3cae1bc1dd646262e25145fdbf9e2d3ae69e455ae1b9ee0
Status: Downloaded newer image for prom/snmp-exporter:latest
8067f3bd0118db581f8c07f377eee1dabca0b2ffc0cbef05799be3ea8225d4e1
#

2. snmp.ymlの設定

SNMP Exporterは snmp.yml という設定ファイルを使用して、どのOIDを監視するかを指定します。このファイルを適切に設定する必要があります。

以下の例は、単純なSNMPデバイス(例:スイッチやルーター)からデータを取得するための snmp.yml 設定例です。

modules:
  if_mib:
    walk:
      - 1.3.6.1.2.1.2
    lookups:
      - source_indexes: [ifIndex]
        lookup: ifDescr
    auth:
      community: public
      version: 2c


# vi prometheus.ymlの中身

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets:
          - 'localhost:9090'  # Prometheus自体のアドレス

  - job_name: 'snmp'
    static_configs:
      - targets:
          - 'localhost:9116'  # SNMP Exporterのアドレス



X.Splunkのインストール


# docker pull splunk/splunk
Using default tag: latest
latest: Pulling from splunk/splunk
56f27190e824: Pull complete
53f947f22f1e: Pull complete
2d6d216e3881: Pull complete
Digest: sha256:b3bce598e330679170fdae1e7e02a492fd29049cf900a1cfe61e1b13bd9e0f28
Status: Downloaded newer image for splunk/splunk:latest
docker.io/splunk/splunk:latest
# docker run -d -e "SPLUNK_START_ARGS=--accept-license" -e "SPLUNK_USER=root" -e "SPLUNK_PASSWORD=splunk123!" -p "8000:8000" --name splunk splunk/splunk

65b0aaf8937b092b9cedf614f845ca28152689c3f1db269324d67b7738743196


# netstat -tuln | grep 8000
-bash: netstat: command not found
上記の、メッセージが表示された場合「 sudo dnf install -y net-tools」を実施する

[root@localhost ~]# sudo dnf install -y net-tools
Last metadata expiration check: 2:38:53 ago on Sat Sep 28 22:19:33 2024.
Dependencies resolved.
================================================================================
 Package         Architecture Version                        Repository    Size
================================================================================
Installing:
 net-tools       x86_64       2.0-0.62.20160912git.el9       baseos       292 k

3.ポートの確認

ホスト側のポート8000が開放されているかの確認

[root@localhost ~]# netstat -tuln | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN
tcp6       0      0 :::8000                 :::*                    LISTEN
[root@localhost ~]#  sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 8000/tcp  ★8000が開いていることが確認できる。
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:


ポートが開放されていない場合8000を開放する


# sudo firewall-cmd --add-port=8000/tcp --permanent
success
# sudo firewall-cmd --reload
success
# #docker  stop prometheus  #docker  rm prometheus

Grafana操作メモ

この記事が気に入ったらサポートをしてみませんか?