DUICUO

【ナイチンゲールモニタリング】ナイチンゲールの第一印象、相変わらず素晴らしい!

序文

可観測性は、ほとんどの中小企業にとって大きな悩みの種であり、主に次のような側面で現れます。

  1. リンク監視には Skywalking を使用し、ログ収集監視には ELK を使用し、メトリック監視には Grafana+Prometheus を使用するなど、さまざまな機能を組み立てるには、異なるオープンソース ソフトウェアが必要です。
  2. 各オープンソース ソフトウェアは独立したシステムによってサポートされており、以前は互いに独立していました (Grafana ファミリのソフトウェアはすでに統合を実現しています)。
  3. データサイロが存在し、データリンク、ログ、メトリクスは接続なしに独立して動作しています。現在市場に出回っているソリューションは、市販製品か自社開発ソリューションのいずれかです。

この記事の主な焦点は統一されたシステムではありません。現状では、異なるオープンソースコンポーネントがそれぞれ異なる機能を実装しています。N9eではそれらを同じメインパネルで表示できますが、データ間の連携はまだ実現されていません。

では、なぜ N9e を勉強したり研究したりする必要があるのでしょうか?

なぜなら、この方向に発展しているからです。

前述の通り、Grafanaはすでにこれを実現しています。Grafana、Loki、Tempo、Prometheusを組み合わせることで、監視、メトリクス、プロセスの連携を実現できます。N9eとGrafanaの違いは何でしょうか?

Qin 氏の言葉によれば、Grafana は監視パネルの管理に優れており、N9e はアラーム ルールの管理に優れています。

N9e は、異なるビジネス グループや異なるグループに異なるアラーム ルールを送信できるため、1 つのグループで大量のアラーム メッセージが生成されて、最終的に「狼少年」のような事態に陥ることを回避できます。

結局のところ、N9e は実際にはどのような外観なのでしょうか?

以下は私が導入したシステムです。

ご覧のとおり、このパネルでは次のことが実現できます。

  • アラーム管理
  • 時系列指標クエリ
  • ログ分析
  • リンクトレーシング
  • 自己治癒の警告
  • 人事管理
  • ...

こうすることで、複数のアプリを切り替える必要がなくなり、便利かつ迅速になります。

システムアーキテクチャ

簡単に言えば、建築を理解していなければ、すべての努力が無駄になります。

それでは、N9eのアーキテクチャがどのようなものか見てみましょう。N9eの仕組みをアーキテクチャロジックの観点から理解することで、導入と保守の両方において大きなメリットが得られます。

N9eは、主に中央集約型の導入スキームとエッジダウン型のハイブリッド導入スキームという2つの導入オプションを提供しています。これらについては以下で説明します。

集中型展開ソリューション

まず、これが写真です。

このアプローチでは、他のリージョンからの監視データを送信するためのN9eクラスターを構築します。そのためには、中央クラスターと他のリージョン間の強力なネットワーク接続が必要です。

中央クラスターの主なコンポーネントは次のとおりです。

  • MySQL: 構成情報とアラーム イベントを保存するために使用されます。
  • Redis: JWT トークン、マシン メタデータ、その他のデータを保存するために使用されます。
  • TSDB: 監視メトリックを保存する時系列データベース。
  • N9e: コア サービス。Web 要求を処理し、アラート エンジンを提供します。
  • LB: 複数の N9e デバイスの負荷分散を提供します。

他のリージョンでは、ローカル監視データを中央クラスターにプッシュする Categraf をデプロイするだけで済みます。

このアーキテクチャは、シンプルさと比較的低いメンテナンスコストを特徴としています。ただし、データセンター間の良好なネットワーク接続が必要です。ネットワークが貧弱な場合は、以下のソリューションを使用する必要があります。

エッジシンクハイブリッド展開ソリューション

このアーキテクチャは集中型の展開ソリューションを補完し、主にネットワーク状態が悪い状況に対処します。

  1. 時系列データベース(TSDB)、転送ゲートウェイ、アラームエンジンはすべて特定のリージョンに分散されており、各リージョンは独自の処理を実行できます。ただし、各リージョンは中央クラスタとのハートビート接続を確立する必要があり、ユーザーは中央クラスタの監視パネルを通じて他のリージョンの監視情報を参照できます。
  2. すでに Prometheus をお持ちの場合は、データ ソースとして Prometheus を直接接続できます。

エッジ データ センターに時系列データベース、アラーム エンジン、転送ゲートウェイを導入する場合、アラーム エンジンはアラーム ルールを同期するためにデータベースに依存し、転送ゲートウェイもオブジェクトを登録してネットワーク接続を確立するためにデータベースに依存することに注意することが重要です。

PS : この解決策では、ネットワークの状態がすでに悪く、ネットワークを機能させる必要がある場合、依然としてネットワークの問題の影響を受ける可能性があります。

スタンドアロン展開

ここで単一マシンの展開を選択するのはなぜでしょうか?

実際には、N9e の全体的な動作モードを理解するのに役立つため、各コンポーネントを 1 つずつ展開したいと考えました。

!!ヒント: 私は Ubuntu 22.04.1 を使用しています。

MySQLをインストールする

!!ヒント: 速度を上げるために、MariaDB をインストールしました。

 # ミラーソースを更新
$ sudo apt -アップデートを取得
# ソフトウェアを更新する
$ sudo apt -アップグレードを取得
# Mariabd をインストールする
$ sudo apt - get install mariadb - server - 10.6

インストール後、自動的に起動します。その後、データベースのユーザーパスワードを設定してください。

 # データベースに接続する
$ sudo mysql
# 権限とパスワードを設定する
> '1234'識別される'root' @ 'localhost'* . *すべての権限を付与します。
>権限をフラッシュします

Redisをインストールする

 # ミラーソースを更新
$ sudo apt -アップデートを取得
# ソフトウェアを更新する
$ sudo apt -アップグレードを取得
# Redisをインストールする
$ sudo apt install redis -サーバー

デフォルトでは自動的に起動します。

TSDBをインストールする

N9e にはいくつかの TSDB オプションがあります。

  • プロメテウス
  • M3DB
  • ビクトリアメトリクス
  • インフルックスDB
  • サノス

ここではVictoriaMetricsを選択しました。

 # バイナリパッケージをダウンロード
$ wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.90.0/victoria-metrics-linux-amd64-v1.90.0.tar.gz
# 解凍
$ tar xf victoria -メトリック- linux - amd64 - v1 .90 .0 .tar .gz
# 起動する
$ nohup ./victoria - metrics - prod &> victoria .log &

8428 が起動するかどうかを確認します。

N9eをインストールする

 # バイナリパッケージの最新バージョンをダウンロードする
$ wget https://github.com/ccfos/nightingale/releases/download/v6.0.0-ga.3/n9e-v6.0.0-ga.3-linux-amd64.tar.gz
# 解凍
$ mkdir n9e
$ tar xf n9e - v6 .0 .0 - ga .3 - linux - amd64 .tar .gz - C n9e /
# 検査カタログは以下のとおりです
$ll
合計35332
drwxrwxr - x 7 jokerbai jokerbai 4096 4月12日14:05 ./
drwxr - xr - x 4 jokerbai jokerbai 4096 4月12日14:05 .. /
drwxrwxr - x 3 jokerbai jokerbai 4096 4月12日14:05 cli /
drwxrwxr - x 10 jokerbai jokerbai 4096 4月12日14:05 docker /
drwxrwxr - x 4 jokerbai jokerbai 4096 4月12日14:09など/
drwxrwxr - x 20 jokerbai jokerbai 4096 4月12日14:05統合/
- rwxr - xr - x 1ジョーカーバイ ジョーカーバイ25280512 4 月6 日19:05 n9e *
- rwxr - xr - x 1ジョーカーバイ ジョーカーバイ10838016 4 月6 日19:05 n9e - cli *
- rw - r --r-- 1 jokerbai jokerbai 29784 4月 6日 19:04 n9e.sql
drwxrwxr - x 6 jokerbai jokerbai 4096 4月12日14:05 pub /

次に、N9e データベースをインポートします。

 # データベースをインポート
$ mysql - uroot - p < n9e .sql

現在のディレクトリにある N9e 構成ファイル、具体的には etc/config.toml ファイルを変更します。

 [ [ Pushgw.Writers ] ]
# URL = "http://127.0.0.1:8480/insert/0/prometheus/api/v1/write"
URL = "http://127.0.0.1:8428/api/v1/write"

次に、N9e サービスを開始します。

 # サービスを開始する
$ nohup ./n9e &> n9e .log &
# ポート17000が動作しているか確認する
$ ss - ntl | grep 17000
聞く0 4096 * : 17000 * : *

ブラウザに http://127.0.0.1:17000 と入力し、ユーザー名 root とパスワード root.2020 を入力してシス​​テムにログインします。

Categrafをインストールする

Categraf は、収集された情報を TSDB にプッシュする監視およびデータ収集エージェントです。

 # ダウンロード
$ wget https : //ダウンロード.flashcat .cloud / categraf - v0 .2 .38 - linux - amd64 .tar .gz
# 解凍
$ tar xf categraf - v0 .2 .38 - linux - amd64 .tar .gz
# ディレクトリを入力
$ cd categraf - v0.2.38 - linux - amd64 /

次のように、構成ファイル(具体的には conf/config.toml)を変更します。

 [ [作家] ]
url = "http://127.0.0.1:17000/prometheus/v1/write"

[鼓動]
有効= true

次にCategrafを起動します。

 $ nohup ./categraf &> categraf .log &

その後、メインインターフェイスで基本情報を確認できます。

データソースを追加

現在、時系列データ メトリックを表示しようとしても、データ ソースが追加されていないため、見つけることができません。

次のようにして、[システム構成] -> [データ ソース] にデータ ソースを追加します。

すると、対応するインジケーターデータが表示されます。

以下に示すように、組み込みダッシュボードを通じてホストの監視データを表示することもできます。

要約

この記事の主な目的は、Nightingale の予備的な印象を述べ、全体的なアーキテクチャを簡単に紹介し、その後、Nightingale のコンポーネントを明確に理解できるように、インストール プロセスを最初から最後までガイドすることです。

NightingaleはバージョンV6にアップデートされ、ELKやJaegerとの統合など、多くの新機能が追加されました。今後もこのシリーズをアップデートしていきます。