さて、またLinuxの話で、ArchLinux関連です。

今回は、netdataというリソース監視ツールをArchLinuxに導入した際に、
そのままでは正常に起動しませんでした。

以下の手順で起動させることができたので紹介します。

まず、何が起きていたか?

インストール方法は以下

$ sudo pacman -S netdata

設定は以下。外部からアクセス可能なようにbind ipを変更しました。


# netdata configuration
#
# You can download the latest version of this file, using:
#
#  wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
# or
#  curl -o /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
#
# You can uncomment and change any of the options below.
# The value shown in the commented settings, is the default value.
#

[global]
    run as user = netdata

    # the default database size - 1 hour
    history = 3600

    # some defaults to run netdata with least priority
#    process scheduling policy = idle
    OOM score = 1000

    bind to = 127.0.0.1
[web]
    default port = 8080
    web files owner = root
    web files group = netdata

    # by default do not expose the netdata port
    #bind to = localhost
    bind to = 192.168.1.xx

上記設定修正後、以下で起動させます。

$ sudo systemctl start netdata

しかし、ブラウザで該当IP:8080にアクセスしても反応がありません。
以下コマンドでステータスを確認してみます。

$ sudo systemctl status netdata

[root@osmaniax9 ~]# systemctl status netdata
● netdata.service - Real time performance monitoring
     Loaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)
     Active: activating (auto-restart) (Result: exit-code) since Wed 2021-10-27 23:28:21 JST; 5s ago
    Process: 4071 ExecStart=/usr/sbin/netdata -D $EXTRA_OPTS (code=exited, status=127)
   Main PID: 4071 (code=exited, status=127)
        CPU: 17ms

10月 27 23:28:21 osmaniax9 netdata[4071]: /usr/sbin/netdata: error while loading shared libraries: libprotobuf.so.27: cannot open shared object file: No such file or directory
10月 27 23:28:21 osmaniax9 systemd[1]: netdata.service: Failed with result 'exit-code'.

何やらエラーが出ていました。
ここで実行ファイルの実態は「ExecStart=/usr/sbin/netdata」であることがわかりました。

直に叩いてみましょう。

[root@osmaniax9 ~]# /usr/sbin/netdata -D

すると、libprotobuf.so.27が見つからないと言ってました。

/usr/sbin/netdata: error while loading shared libraries: libprotobuf.so.27: cannot open shared object file: No such file or directory

以下のコマンドで確認しましたら確かに使っています。

[root@osmaniax9 ~]# ldd /usr/sbin/netdata|grep buf
	libprotobuf.so.27 => /usr/lib/libprotobuf.so.27 (0xb7119000)

本当にないのか?と、findで検索すると、別バージョンの「libprotobuf.so.28」は存在していました。
ライブラリのバージョンがあがってしまったけど、本体がついていけてなかったのでしょうか。

まずは、libprotobuf.so.2828のリンクをlibprotobuf.so.27で作成してみました。

$ sudo ln -s /usr/lib/libprotobuf.so.28 /usr/lib/libprotobuf.so.27

起動してみたら。。。。


[root@osmaniax9 ~]# systemctl status netdata
● netdata.service - Real time performance monitoring
     Loaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2021-10-27 23:41:21 JST; 1s ago
   Main PID: 4739 (netdata)
      Tasks: 41 (limit: 4773)
     Memory: 21.1M
        CPU: 2.072s
     CGroup: /system.slice/netdata.service
             ├─4739 /usr/sbin/netdata -D
             ├─4741 /usr/bin/netdata --special-spawn-server
             ├─4843 bash /usr/lib/netdata/plugins.d/tc-qos-helper.sh 1
             ├─4854 bash /usr/lib/netdata/plugins.d/charts.d.plugin 1
             ├─4855 /usr/lib/netdata/plugins.d/apps.plugin 1
             ├─4856 bash /usr/lib/netdata/plugins.d/ioping.plugin 1
             ├─4857 sh /usr/lib/netdata/plugins.d/anonymous-statistics.sh START - - false "\"dbengine\"" false null null null null null null null "\"dbengine|Native HTTPS|Netdata Cloud|TLS Host>
             ├─4860 /usr/lib/netdata/plugins.d/nfacct.plugin 1
             ├─4861 bash /usr/lib/netdata/plugins.d/fping.plugin 1
             ├─4862 /usr/bin/python /usr/lib/netdata/plugins.d/python.d.plugin 1
             ├─4880 "[bash]"
             ├─4897 curl -X POST --max-time 2 --header "Content-Type: application/json" -d "{\n    \"api_key\": \"mqkwGT0JNFqO-zX2t0mW6Tec9yooaVu7xCBlXtHnt5Y\",\n    \"event\": \"START -\",\n  >
             ├─4902 bash /usr/lib/netdata/plugins.d/charts.d.plugin 1
             ├─4903 "[date]"
             ├─4904 "[which]"
             └─4909 "[date]"

てことで、成功です!

ちょうどDBのバックアップインポート処理が走っていて負荷がかかっていますね。



ま、Linuxってのはたまにこんなのがあるけども、
こうやって問題を解決していく過程が面白いというかスキルが付くんですよね。
参考になれば幸いです。

では、この辺で!