Feb 28, 2021

Fedora CoreOS + Podman + Prometheus + Blackbox Exporter + GrafanaでWebサーバ(IPv6)を監視してみた。(その2)

Web Server(IPv6)を監視するために、Fedora CoreOS に Podman で監視コンテナ(Prometheus+Blackbox Exporter+Grafana)を作成してみました。今回は Grafana の設定です。

前回の設定で Prometheus で自宅サーバと Netlify の Web Server を外形監視することができましたので今回は Grafana を導入していきます。

Grafana コンテナの作成

Grafana のコンテナを作成していきます。

ビルド用フォルダ

backend
:
├── grafana
│   ├── Dockerfile
│   └── build
│       └── grafana.ini

grafana Dockerfile

grafana/grafana イメージを利用します。設定ファイルは grafana.ini に記載して/etc/grafana にコピーします。またこちらも prothemeus と同様に USER 0(root)としてホスト側の rootless ユーザからマッピングしたボリュームをアクセスできるようにします。

backend/grafana/Dockerfile
FROM grafana/grafana
LABEL version="1.0" "akiboi.net"="akiboI"
 
USER 0
COPY build/grafana.ini /etc/grafana

grafana.ini の設定

grafana.ini は、まずは動作することを優先に考えポート番号とメールの設定のみ変更してその他はディフォルトのままとしました。後でじっくりチューニングしていきたいと思います。

:
#################################### Database ####################################
[server]
http_port = 52102
:
#################################### SMTP / Emailing ##########################
[smtp]
enabled = true
host = smtp.gmail.com:587
user = ●●●●@gmail.com
password = ●●●●●●●●●●●●●
skip_verify = false
from_address = ●●●●@gmail.com
from_name = Grafana
:

Grafana の.gitlab-ci.yml

他のコンテナとほとんど同じで、ビルド判断するフォルダとコンテナ名、ボリュームマッピングが違うのみです。

grafana:
  stage: buildContainer
  only:
    changes:
      - backend/grafana/**/*
  script:
    - HOST="xxxx@yyyy"
    - POD="backend"
    - BASEDIR="/vol"
    - HOMEDIR=`pwd`
    - WORKDIR=`echo ${HOMEDIR} | sed -e "s/^\/home\/gitlab-runner/\/vol\/gitlab-runner\/data/g"`
    - CONTAINER=grafana
    - VOLUME="-v $BASEDIR/$CONTAINER/data:/var/lib/grafana:Z "
    - REGISTRY="registry.akiboi.net:5000"
    - ssh $HOST mkdir -p $BASEDIR/$CONTAINER/data
    - ssh $HOST podman build -t $REGISTRY/$CONTAINER $WORKDIR/$POD/$CONTAINER
    - ssh $HOST podman push $REGISTRY/$CONTAINER
    - ssh $HOST podman stop -i $CONTAINER
    - ssh $HOST podman rm -i $CONTAINER
    - ssh $HOST podman run -dt --pod $POD --restart=always --name $CONTAINER $VOLUME $REGISTRY/$CONTAINER

ダッシュボードの作成

Grafana のコンテナが作成できましたので、Grafan にログインしてみます。 標準であれば http://grafana サーバ:3000 にアクセスすると Grafana の初期画面が表示できると思います。私の環境は FrontEnd Server の Proxy1 の設定も行い https://●●●●.akiboi.net/でアクセスしてみます。最初にログインするときはユーザ ID adminで行います。パスワードを設定してログインできるようになると思います。

Data Source の設定

ログインしたらサイドメニューの Configuration-Data Sources を選択して Prometheus と接続してみます。Prometheus は同じ Pod 内で動作していますので、URL にhttp://localhost:52103(標準のポートを利用している場合は 9090)と入力して Save&Test ボタンをクリックして接続ができたら完了です。

ダッシュボードの設定

最初から設定するのもいいですが、既に公開されているダッシュボードの設定をダウンロードして利用させていただきました。今回利用したのはBlackbox Exporter Overviewで JSON ファイルをダウンロードして Grafana のサイドメニューの Create-Import を選択してダウンロードしたファイルを Upload JSON file ボタンをクリックしてアップロードします。あとはデータソースを登録した Prometheus を選択すると Blackbox Exporter で取得したメトリックスを表示することができると思います。登録したサーバの Duration 全体と個々のサーバの情報が見れると思います。これだけで十分な気がしました。

prometheus target

以上で自宅サーバと Netlify の Web サーバの監視ができるようになりました。