1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Open5GS 5GCとUERANSIM UE/RANでNFのメトリックをPrometheusでモニタリング

Posted at

本記事は、Open5GSとUERANSIMを使用して、C-PlaneのNF(AMF,SMF)のメトリックをPrometheusでモニタリングする場合の簡単な設定について説明します。これにより、5G通信におけるAMFセッション数やアクティブなGTPv1 PDUコンテキスト等の稼働状況をモニタリングすることができます。
なお、5GCのコア網に登場する各NF(Network Function)の役割やインターフェースについて概ね知っていることを期待して書いており、これらの説明は省略します。


目次


Open5GS 5GCのシミュレーション携帯網の概要

これは、以下の構成例にPrometheusによるNFのメトリックのモニタリングを適用した際の追加の設定例です。

以下に構成を示します。なお、メトリックに関係しないNFについては、図から省略しています。

network-overview.png

5GCとUE/RANに使用しているOSSは以下の通りです。PrometheusとGrafana(可視化サーバ)には、Dockerを使用しています。

モニタリングしているNFのIPアドレスとポートは以下の通りです。

NF IP address port Prometheus job_name
AMF 192.168.0.111 9090/tcp open5gs-amfd
SMF1 192.168.0.112 9090/tcp open5gs-smfd1
SMF2 192.168.0.113 9090/tcp open5gs-smfd2

PrometheusとGrafana-OSSの公開しているIPアドレスとポートは以下の通りです。

Server IP address port
Prometheus 192.168.0.111 9091/tcp
Grafana-OSS 192.168.0.111 3000/tcp

Open5GS 5GC C-Planeの設定ファイルの追加の変更点

この場合、次の構成に対して、PrometheusによるNFのメトリックのモニタリング用に更なる変更を行います。

ここでは、追加で設定する内容について説明します。モニタリングに際して、C-Planeの各NFの以下の設定ファイルを編集します。

  • open5gs/install/etc/open5gs/amf.yaml
...
metrics:
    addr: 192.168.0.111
    port: 9090
  • open5gs/install/etc/open5gs/smf1.yaml
...
metrics:
    addr: 192.168.0.112
    port: 9090
  • open5gs/install/etc/open5gs/smf2.yaml
...
metrics:
    addr: 192.168.0.113
    port: 9090

Prometheusを有効にしたOpen5GSのビルド

Prometheusを有効にしたOpen5GSのビルド方法は以下を参照して下さい。

追加で、cmakeをインストールします。

apt update
apt install cmake

DockerでPrometheusを実行するために、以下をインストールします。

ここで、Ubuntu 20.04でビルドする場合の注意点を少し説明します。

1. 以下の通り、ビルド手順を少し変更します。

cd open5gs
meson build --prefix=`pwd`/install
ninja -C build

上記を以下の通りに変更します。

cd open5gs
meson build --prefix=`pwd`/install && meson configure -Dmetrics_impl=prometheus build
ln -s `pwd`/subprojects/ `pwd`/../subprojects
ninja -C build

2. ビルドとインストールの後、共有ライブラリlibcm_prom.soのリンクが以下のNFで見つからない場合、次の操作を行います。

open5gs-amfd
open5gs-smfd

libcm_prom.soをリンクするために、次の操作を行います。

cd open5gs
cp -p install/lib/libcm_prom.so install/lib/x86_64-linux-gnu/

これでもリンクが見つからない場合、次の操作を行います。

cd open5gs
echo `pwd`/install/lib/x86_64-linux-gnu >> /etc/ld.so.conf.d/open5gs.conf
ldconfig

Prometheusを実行

Open5GSとPrometheusの連携は、以下を参照して下さい。

Prometheus DashboardへのWebアクセス

最初に、以下のprometheus.ymlを作成します。

global:
  scrape_interval: 10s

scrape_configs:
  - job_name: open5gs-amfd
    static_configs:
      - targets: ["192.168.0.111:9090"]
  - job_name: open5gs-smfd1
    static_configs:
      - targets: ["192.168.0.112:9090"]
  - job_name: open5gs-smfd2
    static_configs:
      - targets: ["192.168.0.113:9090"]

Open5GSを起動した後、以下の通りにPrometheusを実行します。

docker run -d -p 9091:9090 -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

これで、ブラウザから以下のURLにアクセスできるようになります。

http://192.168.0.111:9091/
network-overview.png

モニタリング対象のNFの一覧は以下の通りです。

network-overview.png

Open5GS AMFのメトリック

job_name=open5gs-amfdのEndpoint linkを辿ると、以下のメトリックが表示されます。

# HELP ran_ue RAN UEs
# TYPE ran_ue gauge
ran_ue 0

# HELP amf_session AMF Sessions
# TYPE amf_session gauge
amf_session 0

# HELP gnb gNodeBs
# TYPE gnb gauge
gnb 0

# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1024

# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1

# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total gauge
process_cpu_seconds_total 3

# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 152248320

# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 19255296

# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 515230

# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 24

Open5GS SMFのメトリック

job_name=open5gs-smfd1のEndpoint linkを辿ると、以下のメトリックが表示されます。

# HELP gn_rx_createpdpcontextreq Received GTPv1C CreatePDPContextRequest messages
# TYPE gn_rx_createpdpcontextreq counter
gn_rx_createpdpcontextreq 0

# HELP gn_rx_deletepdpcontextreq Received GTPv1C DeletePDPContextRequest messages
# TYPE gn_rx_deletepdpcontextreq counter
gn_rx_deletepdpcontextreq 0

# HELP gtp1_pdpctxs_active Active GTPv1 PDP Contexts (GGSN)
# TYPE gtp1_pdpctxs_active gauge
gtp1_pdpctxs_active 0

# HELP ues_active Active User Equipments
# TYPE ues_active gauge
ues_active 0

# HELP gtp2_sessions_active Active GTPv2 Sessions (PGW)
# TYPE gtp2_sessions_active gauge
gtp2_sessions_active 0

# HELP gtp_node_gn_rx_parse_failed Received GTPv1C messages discarded due to parsing failure
# TYPE gtp_node_gn_rx_parse_failed counter

# HELP s5c_rx_createsession Received GTPv2C CreateSessionRequest messages
# TYPE s5c_rx_createsession counter
s5c_rx_createsession 0

# HELP s5c_rx_deletesession Received GTPv2C DeleteSessionRequest messages
# TYPE s5c_rx_deletesession counter
s5c_rx_deletesession 0

# HELP gtp_new_node_failed Unable to allocate new GTP (peer) Node
# TYPE gtp_new_node_failed counter
gtp_new_node_failed 0

# HELP s5c_rx_parse_failed Received GTPv2C messages discarded due to parsing failure
# TYPE s5c_rx_parse_failed counter
s5c_rx_parse_failed 0

# HELP sessions_active Active Sessions
# TYPE sessions_active gauge
sessions_active 0

# HELP gtp_node_gn_rx_createpdpcontextreq Received GTPv1C CreatePDPContextRequest messages
# TYPE gtp_node_gn_rx_createpdpcontextreq counter

# HELP gtp_node_gn_rx_deletepdpcontextreq Received GTPv1C DeletePDPContextRequest messages
# TYPE gtp_node_gn_rx_deletepdpcontextreq counter

# HELP bearers_active Active Bearers
# TYPE bearers_active gauge
bearers_active 0

# HELP gn_rx_parse_failed Received GTPv1C messages discarded due to parsing failure
# TYPE gn_rx_parse_failed counter
gn_rx_parse_failed 0

# HELP gtp_node_s5c_rx_parse_failed Received GTPv2C messages discarded due to parsing failure
# TYPE gtp_node_s5c_rx_parse_failed counter

# HELP gtp_peers_active Active GTP peers
# TYPE gtp_peers_active gauge
gtp_peers_active 0

# HELP gtp_node_s5c_rx_createsession Received GTPv2C CreateSessionRequest messages
# TYPE gtp_node_s5c_rx_createsession counter

# HELP gtp_node_s5c_rx_deletesession Received GTPv2C DeleteSessionRequest messages
# TYPE gtp_node_s5c_rx_deletesession counter

# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1024

# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1

# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total gauge
process_cpu_seconds_total 7

# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 1169731584

# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 45481984

# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 515230

# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 21

Grafanaを実行

ここでは、GrafanaのOSS版を使用します。

Grafana DashboardへのWebアクセス

Open5GSとPrometheusを起動後、以下の通りにGrafana-OSSを実行します。

docker run -d -p 3000:3000 grafana/grafana-oss

これで、ブラウザから以下のURLにアクセスできるようになります。なお、ログイン時のデフォルトのユーザ名とパスワードは共にadminです。

http://192.168.0.111:3000/

Grafanaで使用するPrometheus data source

data source name、URL、access modeは以下の通りです。

Name URL Access Mode
Open5GS http://192.168.0.111:9091/ Server
network-overview.png

Grafanaでメトリックを可視化する設定例

最初にGrafana Dashboardを用意し、そこに可視化したいメトリックのパネルを作成します。以下のMetrics browserで、三つのjob_namesから可視化したいjob_nameとメトリックを選択し、そのメトリック用のパネルのプロパティを設定してパネルを追加し、Dashboardを作成します。

以下は、AMFのメトリックamf_sessionのパネルを設定する簡単な例です。

network-overview.png

このように、Grafanaを用いてメトリック毎に魅力的なパネルを作成し、それらを組み合わせることで、使いやすいDashboardを自由にデザインできます。

最後に

一般に、システムには稼働状況をモニタリングする手段が用意されているものです。今回のOpen5GSはオープンソースの4G/5Gコアですが、最近になり、Prometheusでモニタリング可能なメトリックのフレームが入り、最初のメトリックが幾つか組み込まれました。今後、有益な稼働情報のメトリックが追加されていくと思います。
なお、今回紹介したNFは5GCのAMFとSMFですが、EPC(4G)のMMEにもメトリックが組み込まれました。

最後に、元記事はGithubに書いたものです。Open5GSのチュートリアルからもリンクして頂きました。

主な変更履歴

  • [2022.09.13] 初版。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?