view Paper/tex/technology-overview.tex @ 3:8b01419817fe

定期
author kiyama <e185758@ie.u-ryukyu.ac.jp>
date Fri, 06 May 2022 18:43:10 +0900
parents 17fb6a2b46d5
children
line wrap: on
line source

\section{技術概要}
\pagenumbering{arabic}

\subsection{Prometheus}
Prometheusは\cite{Prometheus}オープンソースのメトリクスベースのモニタリングシステムである.
音声ファイル共有サービスを配信しているSoundCloud社によって2012年に開発されており,2015年に一般に公開されている.
対象サービスから監視サーバーに対し情報を取得するpull型を採用しており,取得したデータは時系列データベースに保存される.特徴としてそれぞれのデータに付与されているラベルごとに情報をまとめることが出来る.また,PromQLという独自のクエリ言語を扱う事でアラート管理コンポーネントであるAlertmanagerにクエリを発行することができる.
内蔵する式ブラウザからグラフ・ダッシュボードの作成やデータ検索ができるが作成したグラフは保存することができないことや汎用のダッシュボードシステムでは無い事から一般的には可視化ツールと組み合わせて運用される.

\subsection{PromQL}
Prometheusの時系列データを扱うことに特化したクエリ言語である.
exporterによって付与されるラベルを用いることで柔軟な集計が可能である.
グラフやPrometheusの式ブラウザを表示するのに使用したり,HTTP APIを介して外部システムで利用することが出来る.

\subsection{exporter}
監視対象のデータを収集しPrometheusからのリクエストに応じて必要なデータを整形しPrometheusにレスポンスとして返すツールである.
Prometheusに送信するデータに対しラベルを付与することができ情報の絞り込みが楽になる.
サーバーの情報を収集するnode\_exporterや通信のエンドポイントを監視するblackbox\_exporterなど公式が提供しているもの以外に多くのサードパーティがサービスのexporterを提供しており,自身で独自のexporterを作成することも可能である.

\subsection{Alertmanager}
Alertmanager\cite{alertmanager}はPrometheusのコンポーネントであり,オープンソースソフトウェアとして公開されているアラート管理ツールである.
アラートの重複排除,グループ化などによりアラートの送信を行うことができる.

\subsection{Loki}
Loki\cite{loki}はPrometheusに触発されたオープンソースのログ収集ツールである.
特徴としてPrometheusのようにログデータをラベル毎にまとめることができる.
また,Prometheusと同様にLogQLという独自のクエリ言語を扱う事でアラート管理コンポーネントであるAlertmanagerにクエリを発行することができる.

\subsection{Promtail}
ログを収集してLokiに送信するツール.
Prometheusのexporterのようにアプリケーションのログに対しラベルを付与することができる.

\subsection{Grafana}
収集されたデータ・ログをダッシュボートを用いてブラウザから可視化可能なツールである.
自身でデータを収集をせずデータの可視化を行うためデータソースと組み合わせて使うのが一般的である.
データソースとしてPrometheusとlokiを対応しており,LogQLを用いてカスタムしたログ情報を表示することが可能である.

\subsection{Zabbix}
Zabbixはオープンソースの統合監視ソフトウェアである.
多数の監視機能をデフォルトの機能として提供しているほか,サーバー,ネットワーク,サービスを集中監視する為の監視機能,障害検知機能,アラート送信機能,可視化機能を提供している.
また特徴としてエージェントを監視対象にインストールすることなく監視が可能であり,エージェントを使用することでサービスの詳細なステータスの監視も可能となる.

\subsection{Mattermost}
オープンソースのセルフホスティング式のチャットサービスである.
類似プロダクトにSlackがあり,差別点としてはサーバーから自身で構築するためチャットに保存期間の上限が無い.
また,組織や企業などの開発者向けに作成されており,様々なツールとの結合が可能できる.

\subsection{コンテナ型}
仮想化技術の一つであり,他の仮装技術との相違点はカーネルはホストOSと共用で利用する点である.
これにより他の仮想技術よりリソースが節約でき,仮想環境の構築,削除が高速でできる.

\subsection{Docker}
Docker.Inc.が開発したオープンソースのコンテナ管理ツールである.
コマンドや専用のDockerfileを用いて環境を構築することができ,また作成したイメージを登録することが出来るDocker Hubを用いることで環境を配布することもできる.

\subsection{Podman}
RedHat社が開発したdocker互換のコンテナ管理ツールである.
RHEL(Red Hat Enterprise Linux)のversion7.6以降からはdockerのサポートが切れる事からコンテナ管理ツールとして採用された.

\subsection{ハイパーバイザー型}
仮想化技術の一つであり,ハードウェア上にハイパーバイザと呼ばれる仮想化ソフトウェアを動作させ,その上でゲストOSを運用する.
ホストOSを不要とするがコンテナ型と比べて起動速度は低速となる.

\subsection{KVM}
KVMは(Kernel-based Virtual Machine)の略でlinuxカーネル上で動作する仮想化技術であり,カーネルをハイパーバイザとして機能させる.