仮想環境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操作メモ
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?