このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2024年5月31日金曜日

Prometheus で kubernetes 上のリソースを監視してみる その1 kubernetes に Prometheus と Grafana を構築する。

今回から、kubernetes 上で Prometheus と Grafana を用意して監視を行えるように構築し、Pod や Service といった各リソースをターゲットとして追加するにはどうすればいいかなどを記事にしていきたいと思います。
また、Chat-GPTさんにどうやってyaml書いたらいいか等、構築の仕方についてアドバイスをもらいながらやってみてAIの活用みたいなことに手を出していこうと思います。


利用する環境の前提条件ですが、コントロールプレーン1台 ノード2台の構成に外部公開用IPアドレスを払い出すためのMetalLBが構築済みの環境となります。

kubernetes を使用するので、全部 Pod として展開することになり細かい設定を作った後にいじるのはちょっと難しくなります。
ですが、何度も作り直すことが容易になりますので、今回は完成系に向かって一つ一つ構築していくというよりは一旦ここまで作ると決めてそれが作れるyamlを作成します。
そのyamlを元に、次にここまで作ると決めてyamlに手を加えていく方法でやっていこうと思います。
最終的に、出来上がったyamlをapplyすれば全部一度に作成できるようになっているはずです。

具体的に言いますと以下のyamlを作りながら完成を目指したいと思います。

第1回目:Prometheus と Grafana を構築して外部からアクセス可能な状態となっているyamlを作成
第2回目:2.そのyamlを元に、Prometheus の監視対象となる Pod や Service 等のリソースを追加したyamlを作成

そのあとですが、第3回目としてGrafana から Prometheus で監視している対象を監視するダッシュボードを自作してみようと思います。
この第3回目についてはyamlではなく実際にGrafanaを操作して設定していく予定です。

前置きが長くなってしまいましたが、早速第1回目のPrometheusとGrafanaの作成に取り掛かってみます。

何も知らないふりをして、ChatGPTさんに聞いてみました。

質問文:kubernetes を利用してPrometheusとGrafanaを作成したいです。管理のためそれぞれのnamespaceを作成してリソースを配置したいと思いますが、どのようにすればいいでしょうか。

結果は以下のスクショのようになりました。

まずnamespaceをそれぞれコマンドで作成するように案内されました。
次は長くてスクショを分割しましたが、PrometheusとGrafanaの作成を行うyamlのを案内してくれました。
なんと、特に説明していないのにServiceも作ってくれていますね。

Prometheusのyaml
Grafanaのyaml
そして、yamlをapplyするところも案内してくれました。
ですが、せっかくなので、名前空間の作成も含めて一つのyamlにまとめてもらえないか聞いてみましょう。
かなり長くなってしまいましたが、1つにまとめてくれました。
ちなみにお礼を言うとこんなふうに返してくれます。

これをそのまま純真無垢な心でapplyしてもいいのですが、こちらから与えた情報がかなり少なかったので一応中身を確認してみます。
確認してみたところ、Serveを作成してくれていたんですがタイプが入っていませんでした。
これでは、外部からアクセスするためのIPアドレスが払い出されず接続できません。

しかしながら、これは最初にそうしたいと伝えなかった私のミスですね。
ChatGPTに限らず、AIを使用する際はこのようにきめ細かな詳細設定を伝える必要があるのですが、全部最初から伝えきるのは大変なので案内してくれたものを精査して不足部分を補っていきましょう。

では、Serviceにtype LoadBarancerを追加してもらえるようにお願いします。
長くなってしまうので一部分だけのスクショになりますが、案内してくれたyamlに今度は『type: LoadBalancer』が追加されています。
では、うまくいくことを祈りつつyamlをapplyしてみましょう。

実際にこのyamlをapplyしてみると、リソースが作成され始めるのですが Prometheus の Pod が ContainerCreating のままとなります。
# kubectl get pod -n prometheus
NAME                         READY   STATUS              RESTARTS   AGE
prometheus-87b9fbd44-zxl4r   0/1     ContainerCreating   0          5d
原因の確認をするため、該当Pod の詳細を見てみると、configmapがないためでした。
# kubectl describe pod/prometheus-87b9fbd44-zxl4r -n prometheus

Events:
  Type     Reason       Age                    From               Message
  ----     ------       ----                   ----               -------
  Normal   Scheduled    7m54s                  default-scheduler  Successfully assigned prometheus/prometheus-87b9fbd44-zxl4r to dev-k8s-02.devops.lab
  Warning  FailedMount  102s (x11 over 7m54s)  kubelet            MountVolume.SetUp failed for volume "prometheus-config" : configmap "prometheus-config" not found
というわけで、configmap も作れるyamlにしてもらいました。
最初は、configmapを作成するためのファイルを用意してそれを読み込んでconfigmapを作成する方式を提案されました。
1つのyamlファイルに収めたかったので、それも含めて1つのyamlの中でどうにかできないかChatGptさんとやり取りしてconfigmapとprometheusの部分は以下のようになりました。
あらためてこのyamlをapplyすると、PrometheusとGrafanaのPodが作成されブラウザでアクセス可能となります。
ChatGptさんを使ってみた感じですが、全く見当違いの答えが出てきたときには修正が楽だったんですが中途半端にこちらの意図が伝わってる時に『部分的にこうしてほしい』を伝えるのがなかなか大変でしたね。

また、アウトプットをそのまま使うのではなく、中身を確認することは重要だと思いました。
そのまま利用して問題なく動く場合も十分あると思うのですが、今回で言うとServiceのタイプについて伝えてなかったので外部からアクセスできない状態でした。
しかしそのまま利用するとyamlのapplyには成功してしまいます。
成功してしまうので問題ないと思ってしまう・・・ということが起きかねません。

なので、やはり自分でアウトプットされた内容が自分の欲しいものになっているかどうかというのがある程度は分かるように精進しましょう。

今回はここまでとなります。

2024年5月30日木曜日

VyOSの代替ルーターを探してみる その1 調べてみた

無料で手軽に使える VyOSですが、少し前から有償化の流れに動いているようです。以前は古いLTSをダウンロードできましたが、今はナイトービルドという日々公開されるバージョンのみダウンロードできます。簡単な検証で使うならこれでもいいのかなと思いますが、そろそろ代替ルーターを探してもよいかなと思いましたので、まずは調べてみることにしました。

有償の仮想ルーターならYAMAHA、Fitel、SEIL、センチュリーシステムズなど日本国産メーカーをいろいろと選べるのでこの機会に有償ルーターもありかな、、とは思います。IIJ SEIL/x86やセンチュリーシステムズのFutureNet VXRは個人でも買える値段なので購入を予定しています。すでにいろいろと日本語の情報はありそうなので、そのうちやります。

Linuxをルーターにすればいいでしょ、、という案もあると思います。それで解決するケースも多々あると思いますが、今回は除外します。

個人の検証用途ならば無償のものが良いかなと思いますので、まずはOSSやフリーのルーターを調べてリストアップしてインストールから設定までやってみることにしました。対象とするルーターは以下です。


今回、実際に試すことはしませんが、日本のメーカーでも仮想ルーターは販売しており、無償トライアルもできます。
以下のルーターは個人でも購入できる価格帯あり

有償の仮想ルーター/FWならCiscoやJuniperなど探せば海外製品もいろいろと出てきますので企業の業務用で利用することがあるなら販売店にご相談ください。

次回から実際に試してみたいと思います。それでは。

2024年5月29日水曜日

CSV利用してADにグループ一括作成。。

 


ADで検証するときに複数グループが欲しいことあります、、よね。
いろいろなところに情報があるのでブログを書くまでもないのですが、、
今後、自分が検証環境で使うときにすぐ使えるためのメモとして残します。。

利用した環境:Windows Server 2016(評価版)
グループを作成するOU:test-ou

ADでグループを作成するコマンドを確認(例):
New-ADGroup -Name grp-001 -GroupScope global -GroupCategory  Security -Path "OU=test-ou,DC=lab001,DC=internal"

CSVを利用してグループ作成した時のコマンド:
Import-Csv “C:\Create_Group.csv” -Encoding Default | ForEach-Object {New-ADGroup -Name $_.Name -GroupScope global -GroupCategory  Security -Path "OU=test-ou,DC=lab001,DC=internal"}

以下のパスにCSVを配置:
C:\Create_Group.csv

CSVファイルの記載例

Name
grp-001
grp-002
grp-003
grp-004
grp-005
...
grp-1000

 

参考にしたサイト

https://blog.powershell-from.jp/?p=1220
https://lig-log.com/ad-object-batch-creation/

簡単に作成できますね。