# HG changeset patch # User kiyama # Date 1651830190 -32400 # Node ID 8b01419817fe5f45238e6dff94872b64763194a5 # Parent 17fb6a2b46d5441536893bb866377454f522a90f 定期 diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/fig/mmslash-command.pdf Binary file Paper/fig/mmslash-command.pdf has changed diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/kiyama-sigos.dvi Binary file Paper/kiyama-sigos.dvi has changed diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/kiyama-sigos.fdb_latexmk --- a/Paper/kiyama-sigos.fdb_latexmk Fri May 06 14:59:43 2022 +0900 +++ b/Paper/kiyama-sigos.fdb_latexmk Fri May 06 18:43:10 2022 +0900 @@ -1,16 +1,16 @@ # Fdb version 3 -["bibtex kiyama-sigos"] 1651815637 "kiyama-sigos.aux" "kiyama-sigos.bbl" "kiyama-sigos" 1651816095 +["bibtex kiyama-sigos"] 1651815637 "kiyama-sigos.aux" "kiyama-sigos.bbl" "kiyama-sigos" 1651830119 "./ipsjsort.bst" 1651682373 25930 d27669b348c8e9a5c1cc93168b2b5e89 "" - "kiyama-sigos.aux" 1651816093 4964 d190919500d55b2416b81586d18a871b "latex" + "kiyama-sigos.aux" 1651830117 4964 d190919500d55b2416b81586d18a871b "latex" "reference.bib" 1651682373 1287 0e835c040b3048fb8fef9eb0b39a2af3 "" (generated) "kiyama-sigos.blg" "kiyama-sigos.bbl" -["dvipdf"] 1651816093 "kiyama-sigos.dvi" "kiyama-sigos.pdf" "kiyama-sigos" 1651816095 - "kiyama-sigos.dvi" 1651816093 38280 74e927282af64d3ec26ed63cbea57e3c "latex" +["dvipdf"] 1651830117 "kiyama-sigos.dvi" "kiyama-sigos.pdf" "kiyama-sigos" 1651830119 + "kiyama-sigos.dvi" 1651830117 38472 f45312ff485a30421b6d6234f1d33b65 "latex" (generated) "kiyama-sigos.pdf" -["latex"] 1651816091 "kiyama-sigos.tex" "kiyama-sigos.dvi" "kiyama-sigos" 1651816095 +["latex"] 1651830116 "kiyama-sigos.tex" "kiyama-sigos.dvi" "kiyama-sigos" 1651830119 "/usr/local/texlive/2020/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" "/usr/local/texlive/2020/texmf-dist/fonts/tfm/adobe/times/ptmr7t.tfm" 1136768653 2124 2601a75482e9426d33db523edf23570a "" "/usr/local/texlive/2020/texmf-dist/fonts/tfm/jknappen/ec/ecrm0700.tfm" 1136768653 3584 cf973739aac7ab6247f9150296af7954 "" @@ -137,18 +137,18 @@ "fig/prometheus-expr.png" 1643076543 327460 0eafea85d9353bb543531aece08f2704 "" "ipsj.cls" 1651682373 142123 ecf81ecc4679baed6ac44a1571336871 "" "ipsjtech.sty" 1651682373 6572 e6269869e3c126f2d200f352d590509a "" - "kiyama-sigos.aux" 1651816093 4964 d190919500d55b2416b81586d18a871b "latex" + "kiyama-sigos.aux" 1651830117 4964 d190919500d55b2416b81586d18a871b "latex" "kiyama-sigos.bbl" 1651815637 697 c8ed06acbeb17b539cc486fa22495faa "bibtex kiyama-sigos" "kiyama-sigos.tex" 1651749541 3306 cc510cee2144139a3cb43d163acd9dce "" "src/loki-alert.yml" 1651725352 244 108a72be2b3145d22b62894dac56ef1d "" - "tex/ie-monitoring-construction.tex" 1651740728 2802 4c1dae1bbc81cbfdd952deb2615659b1 "" - "tex/ie-monitoring-design.tex" 1651815718 5134 39e78e0022e481aa3f9f706104b56ed1 "" - "tex/intro.tex" 1651808457 3220 ea6326e1b632247297167a191047dd43 "" - "tex/monitoring.tex" 1651738183 2380 c59a28bf69e6ea77af0225fe955fa765 "" - "tex/problem.tex" 1651816091 1242 45c5e406608f039d01655ff95e28f027 "" + "tex/ie-monitoring-construction.tex" 1651830116 2718 989bf8ad5c99b5d254ed53f1ec213fa1 "" + "tex/ie-monitoring-design.tex" 1651827922 5114 05fed18aef27a72d6a6c2e9097ae129d "" + "tex/intro.tex" 1651820074 3220 5a888a0e3511886f6308b3d1c21cacff "" + "tex/monitoring.tex" 1651819802 2374 2c1242a59ee3a0bf1c19155fa001fba9 "" + "tex/problem.tex" 1651827569 1505 45f74fb078597eb38408e7422b1e68e4 "" "tex/summary.tex" 1651756873 765 5f0d61135f1556f8f6c3a191b2cc403e "" - "tex/technology-overview.tex" 1651752103 5797 8f521017b99e61f8a6f798c09cef5ab4 "" + "tex/technology-overview.tex" 1651820166 5791 da824464597f3adb8777fc95cd1075c5 "" (generated) + "kiyama-sigos.aux" + "kiyama-sigos.dvi" "kiyama-sigos.log" - "kiyama-sigos.dvi" - "kiyama-sigos.aux" diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/kiyama-sigos.log --- a/Paper/kiyama-sigos.log Fri May 06 14:59:43 2022 +0900 +++ b/Paper/kiyama-sigos.log Fri May 06 18:43:10 2022 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.14159265-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2020) (preloaded format=platex 2020.4.26) 6 MAY 2022 14:48 +This is e-pTeX, Version 3.14159265-p3.8.3-191112-2.6 (utf8.euc) (TeX Live 2020) (preloaded format=platex 2020.4.26) 6 MAY 2022 18:41 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -4883,13 +4883,6 @@ LaTeX Font Warning: Font shape `JY1/hmc/b/n' undefined (Font) using `JY1/hmc/bx/n' instead on input line 37. - -LaTeX Warning: Reference `fig:alert-add' on page 4 undefined on input line 37. - - -LaTeX Font Warning: Font shape `JY1/hmc/b/n' undefined -(Font) using `JY1/hmc/bx/n' instead on input line 38. - [4]) (./tex/problem.tex LaTeX Font Warning: Font shape `JY1/hmc/b/n' undefined @@ -4953,17 +4946,14 @@ LaTeX Font Warning: Some font shapes were not available, defaults substituted. - -LaTeX Warning: There were undefined references. - ) Here is how much of TeX's memory you used: - 10055 strings out of 481140 - 145526 string characters out of 5917417 + 10054 strings out of 481140 + 145511 string characters out of 5917417 552717 words of memory out of 5000000 - 25910 multiletter control sequences out of 15000+600000 + 25909 multiletter control sequences out of 15000+600000 641832 words of font info for 178 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 41i,11n,51p,519b,1363s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on kiyama-sigos.dvi (5 pages, 38280 bytes). +Output written on kiyama-sigos.dvi (5 pages, 38472 bytes). diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/kiyama-sigos.pdf Binary file Paper/kiyama-sigos.pdf has changed diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/kiyama-sigos.synctex.gz Binary file Paper/kiyama-sigos.synctex.gz has changed diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/tex/ie-monitoring-construction.tex --- a/Paper/tex/ie-monitoring-construction.tex Fri May 06 14:59:43 2022 +0900 +++ b/Paper/tex/ie-monitoring-construction.tex Fri May 06 18:43:10 2022 +0900 @@ -3,7 +3,7 @@ \subsection{構成} 監視システムと同一のサーバーにAPIサーバーを立てmattermostから送信された -GET,POST リクエストに対し処理を行う。図5.1に構成図を示す. +GET,POST リクエストに対し処理を行う。図\ref{fig:mattermost-slash}に構成図を示す. \\ \begin{figure}[htbp] \begin{center} @@ -34,7 +34,6 @@ アラートルールを追加する場合は/alert add \$alertname \$label \$pattern \$timeを入力する.\\ 引数の意味はそれぞれ\$alertnameはアラートが送信される時のアラート名,\$labelはアラートに紐付いているラベル,\$patternはログに含まれていた際にカウントする文字列,\$timeはアラートを送信する周期を指定している.\\ -図\ref{fig:alert-add}に\/alert addコマンドを使用してアラートを追加した様子を示す. /alert list は登録したアラートルールを表示する. 上記のコマンドは引数なしでコマンドを入力すると登録されているアラート名のみが表示される. diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/tex/ie-monitoring-design.tex --- a/Paper/tex/ie-monitoring-design.tex Fri May 06 14:59:43 2022 +0900 +++ b/Paper/tex/ie-monitoring-design.tex Fri May 06 18:43:10 2022 +0900 @@ -1,9 +1,9 @@ \section{監視システムの構成} -サービスでは学科システムのシステムの監視やログの収集を行う。この監視システムの構成を図に示し。概要を以下で説明する。 +サービスでは学科システムのシステムの監視やログの収集を行う.この監視システムの構成を図に示し.概要を以下で説明する. \subsection{監視システム} 本実験では全ての監視システムをコンテナ上に構築しており,docker-compose.yml ファイルからpodmanでコンテナを作成する形を取っている. -また、各サービス間の通信は各コンテナにipを振るのではなくコンテナ名を指定することで行っている。 +また,各サービス間の通信は各コンテナにipを振るのではなくコンテナ名を指定することで行っている. サービスの死活監視はprometheus,ログ収集はloki,それらのデータ可視化はgrafana,アラート送信はalertmanagerを用いて構築している.システム監視の構成を\ref{fig:monitoring-system}に示す. exporter,alertmanagerはprometheusのコンポーネントとなっており,exporterで各サービスのメトリック情報をprometheusに対して送信している. また,prometheus の独自のクエリ言語であるpromQLで設定した条件を満たした際にalertmanagerに対してアラートを送信する. @@ -48,13 +48,13 @@ \subsection{ログ収集} 障害が発生したサーバーがアクセス可能であればログを確認することはできるが,何らかの原因でアクセス出来ない場合はログを確認する手段がない.そこで各サーバーのログを収集する事でサーバーの死活状態に関わらず原因調査が可能である. また,grafanaではlogQLを用いて絞り込みが出来る為特定までにかかるコストが低くなると考える. 提案システムでは, ログ収集にはlokiを用いている. loki自体に収集したログを表示する 機能は無く,grafnaと連携してログの可視化を行う. -また、lokiとgrafanaでのログの可視化でも一般的には,カスタムダッシュボードを使用して可視化を行う. +また,lokiとgrafanaでのログの可視化でも一般的には,カスタムダッシュボードを使用して可視化を行う. %\section{研究目的} \subsection{アラート送信} -システムのリソース状態や死活状態, ログ情報は安定してシステムを運用する上で把握しておくべき情報である. しかし, 人間が24時間365日稼働しているシステムを監視し続けるのは現実的ではない. その為指定したログが出力されたりサービスが停止した際に管理者に通知する仕組みが必要でありそれがアラート機能である. -また,prometheus,loki 共に設定ファイルにalertmanagerのURを記入することで連 -携が可能である. またアラートルールのファイル形式についてgrafanaの公式サイトは「Loki alerting rules are exactly the same, except they use LogQL for their expressions. 」[3] と明言しており, 使用する QL を除いてアラートルールの記述方法は変わらない事からここではlokiのアラートルールのみを紹介する. +システムのリソース状態や死活状態,ログ情報は安定してシステムを運用する上で把握しておくべき情報である.しかし, 人間が24時間365日稼働しているシステムを監視し続けるのは現実的ではない.その為指定したログが出力されたりサービスが停止した際に管理者に通知する仕組みが必要でありそれがアラート機能である. +また,prometheus,loki共に設定ファイルにalertmanagerのURを記入することで連 +携が可能である. またアラートルールのファイル形式についてgrafanaの公式サイトは「Loki alerting rules are exactly the same, except they use LogQL for their expressions. 」[3]と明言しており, 使用するQLを除いてアラートルールの記述方法は変わらない事からここではlokiのアラートルールのみを紹介する. ソースコード4.2がlokiのアラートルールファイルである.このコードの7行目がアラートを制御する部分であり5分周期でログの有無を確認しログが生成されていたらalertmanagerにクエリを送信するようなコードになっている. -\lstinputlisting[label=src:loki-alert, caption=lokiのアラートルールファイル]{src/loki-alert.yml} +\lstinputlisting[label=src:loki-alert,caption=lokiのアラートルールファイル]{src/loki-alert.yml} diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/tex/intro.tex --- a/Paper/tex/intro.tex Fri May 06 14:59:43 2022 +0900 +++ b/Paper/tex/intro.tex Fri May 06 18:43:10 2022 +0900 @@ -12,14 +12,14 @@ しかしシステムの大規模化,複雑化に伴いログ情報を手動で管理することは現実的ではない.また障害発生時に対象サーバーにアクセス出来ない場合にはそもそもログ自体を確認することができなくなる. このような問題にログ管理システムは有効だと考えられる -琉球大学工学部工学科知能情報コースには学生が主体となって管理するシステム (以下学科システムとする)が存在する -これらの学科システムは学内ネットワークや貸出用の仮想マシン、学内チャットツールなど研究や授業を円滑に進めるためのサービスを提供している +琉球大学工学部工学科知能情報コースには学生が主体となって管理するシステム(以下学科システムとする)が存在する. +これらの学科システムは学内ネットワークや貸出用の仮想マシン,学内チャットツールなど研究や授業を円滑に進めるためのサービスを提供している. その為システムトラブルの予兆を検知することや外部から攻撃された時に管理者に通知を送信する機能が必要となる. 現在学科システムでは障害が発生した際にはユーザーが報告するか管理者がサーバーに入って確認するしか方法がない.さらに障害発生時に対象サーバーにアクセス出来ない場合エラーログを確認することができない. -また監視システムを導入する際に死活監視・ログ収集では稼働しているサービスを対象として構築するが,アラート送信の機能は運用していく中で過不足が無いように調整が必要と考える . -その為,アラートの送信を制御するアラートルールは組織全体で調整しながら運用する方針をとる .その際,通常のアラートルール編集方法では,作業者は編集後に作業をまとめる必要や第三者はその作業手順を探さないといけない問題があり属人化する恐れがある. -そこで本稿では安定した運用のための学科システムに監視ツール及びログ収集サービスの実装の検討をする.また学科で使用しているチャットツールからアラートルールを編集する事で他者に情報が伝わり易くなると考えた . +また監視システムを導入する際に死活監視・ログ収集では稼働しているサービスを対象として構築するが,アラート送信の機能は運用していく中で過不足が無いように調整が必要と考える. +その為,アラートの送信を制御するアラートルールは組織全体で調整しながら運用する方針をとる.その際,通常のアラートルール編集方法では,作業者は編集後に作業をまとめる必要や第三者はその作業手順を探さないといけない問題があり属人化する恐れがある. +そこで本稿では安定した運用のための学科システムに監視ツール及びログ収集サービスの実装の検討をする.また学科で使用しているチャットツールからアラートルールを編集する事で他者に情報が伝わり易くなると考えた. その為,属人化を防ぐ為のmattermostのスラッシュコマンドを用いた変更方法の提案をする. % 再度何を目的にするかを説明 diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/tex/monitoring.tex --- a/Paper/tex/monitoring.tex Fri May 06 14:59:43 2022 +0900 +++ b/Paper/tex/monitoring.tex Fri May 06 18:43:10 2022 +0900 @@ -3,13 +3,13 @@ \subsection{問題点} -現在学科システムにはシステム監視、ログ収集、アラート送信などの異常検知の機能が 無く,システム障害や攻撃の早期発見・事後対応が困難である. +現在学科システムにはシステム監視,ログ収集,アラート送信などの異常検知の機能が無く,システム障害や攻撃の早期発見・事後対応が困難である. 実際に2021年8月にはレンタルサーバーと基幹サーバーで障害が発生した. その際に 利用者からサーバー上で動作しているサービスが使用出来ないという報告を受けて障害に気づいた.また,該当サーバーが物理故障しており,原因調査の為ログを確認したかったがサーバーにアクセス出来なかった為調査開始に時間がかかった. また,10月から11月にかけては学科で運用しているGitlabが脆弱性を突かれ攻撃された.実際に攻撃を受ける前に総当たり攻撃が失敗していたりユーザーに対して警告メールが送信されていたが攻撃に使用されているのに気づいたのは報告を受けてからだった. 本稿では,障害の早期発見や事後対応を円滑に進める為に監視システムの提案を行う. \subsection{監視システムを運用する上での課題} -監視システムを運用していく中でアラートルールは通知される量やその精度に応じて調 整する必要があり, 障害は個人ではなく組織として対応する為, 全ての変更はグループ全 体が理解しているのが好ましい. +監視システムを運用していく中でアラートルールは通知される量やその精度に応じて調 整する必要があり, 障害は個人ではなく組織として対応する為,全ての変更はグループ全 体が理解しているのが好ましい. しかし通常では一人がサーバーにアクセスしてCLI上での変更が必要となる.上記の方法では第三者に編集内容を伝える方法としてログなどにまとめるしか無く,また第三者はログを自分で探す必要がある. その為学科で使用しているチャットサービスであるmattermostからアラートルールを 変更する事で属人化を防ぐ. 上記の方法だとアラートルールを共有する形で編集できる為, 作業ログをまとめる必要や第三者がそれらのログを探す手間が省ける.これにより上述した問題点を改善することが出来,属人化するリスクを抑えることが出来ると考える \ No newline at end of file diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/tex/problem.tex --- a/Paper/tex/problem.tex Fri May 06 14:59:43 2022 +0900 +++ b/Paper/tex/problem.tex Fri May 06 18:43:10 2022 +0900 @@ -9,4 +9,4 @@ 一般的に監視システムを構築する際は冗長化構成を作成しどちらのサーバーがダウンし ても監視し続けられる体制を整える.しかし本研究ではオンプレミスでのみ構築している. その為クラウドにセカンダリを構築することで冗長化を図る必要がある. \subsection{必要なログ・アラートの選択} -本稿で提案した手法によりアラートルールの設定を共有しやすくなった.しかし \ No newline at end of file +本稿で提案した手法によりアラートルールの設定を共有しやすくなった.しかしアラートを出すべきログの取捨選択は運用の中で調節していくしかない.そこで異常を検知した際にサービスが正常に動作するかを自動でテストする仕組みを作ることで誤アラートが減ると考える diff -r 17fb6a2b46d5 -r 8b01419817fe Paper/tex/technology-overview.tex --- a/Paper/tex/technology-overview.tex Fri May 06 14:59:43 2022 +0900 +++ b/Paper/tex/technology-overview.tex Fri May 06 18:43:10 2022 +0900 @@ -4,7 +4,7 @@ \subsection{Prometheus} Prometheusは\cite{Prometheus}オープンソースのメトリクスベースのモニタリングシステムである. 音声ファイル共有サービスを配信しているSoundCloud社によって2012年に開発されており,2015年に一般に公開されている. -対象サービスから監視サーバーに対し情報を取得するpull型を採用しており,取得したデータは時系列データベースに保存される.特徴としてそれぞれのデータに付与されているラベルごとに情報をまとめることが出来る.また、PromQLという独自のクエリ言語を扱う事でアラート管理コンポーネントであるAlertmanagerにクエリを発行することができる. +対象サービスから監視サーバーに対し情報を取得するpull型を採用しており,取得したデータは時系列データベースに保存される.特徴としてそれぞれのデータに付与されているラベルごとに情報をまとめることが出来る.また,PromQLという独自のクエリ言語を扱う事でアラート管理コンポーネントであるAlertmanagerにクエリを発行することができる. 内蔵する式ブラウザからグラフ・ダッシュボードの作成やデータ検索ができるが作成したグラフは保存することができないことや汎用のダッシュボードシステムでは無い事から一般的には可視化ツールと組み合わせて運用される. \subsection{PromQL} @@ -19,7 +19,7 @@ \subsection{Alertmanager} Alertmanager\cite{alertmanager}はPrometheusのコンポーネントであり,オープンソースソフトウェアとして公開されているアラート管理ツールである. -アラートの重複排除、グループ化などによりアラートの送信を行うことができる. +アラートの重複排除,グループ化などによりアラートの送信を行うことができる. \subsection{Loki} Loki\cite{loki}はPrometheusに触発されたオープンソースのログ収集ツールである. @@ -37,13 +37,13 @@ \subsection{Zabbix} Zabbixはオープンソースの統合監視ソフトウェアである. -多数の監視機能をデフォルトの機能として提供しているほか、サーバー,ネットワーク,サービスを集中監視する為の監視機能,障害検知機能,アラート送信機能,可視化機能を提供している. +多数の監視機能をデフォルトの機能として提供しているほか,サーバー,ネットワーク,サービスを集中監視する為の監視機能,障害検知機能,アラート送信機能,可視化機能を提供している. また特徴としてエージェントを監視対象にインストールすることなく監視が可能であり,エージェントを使用することでサービスの詳細なステータスの監視も可能となる. \subsection{Mattermost} オープンソースのセルフホスティング式のチャットサービスである. 類似プロダクトにSlackがあり,差別点としてはサーバーから自身で構築するためチャットに保存期間の上限が無い. -また,組織や企業などの開発者向けに作成されており、様々なツールとの結合が可能できる. +また,組織や企業などの開発者向けに作成されており,様々なツールとの結合が可能できる. \subsection{コンテナ型} 仮想化技術の一つであり,他の仮装技術との相違点はカーネルはホストOSと共用で利用する点である. @@ -51,7 +51,7 @@ \subsection{Docker} Docker.Inc.が開発したオープンソースのコンテナ管理ツールである. -コマンドや専用のDockerfileを用いて環境を構築することができ、また作成したイメージを登録することが出来るDocker Hubを用いることで環境を配布することもできる. +コマンドや専用のDockerfileを用いて環境を構築することができ,また作成したイメージを登録することが出来るDocker Hubを用いることで環境を配布することもできる. \subsection{Podman} RedHat社が開発したdocker互換のコンテナ管理ツールである. @@ -62,4 +62,4 @@ ホストOSを不要とするがコンテナ型と比べて起動速度は低速となる. \subsection{KVM} -KVMは(Kernel-based Virtual Machine)の略でlinuxカーネル上で動作する仮想化技術であり,カーネルをハイパーバイザとして機能させる. +KVMは(Kernel-based Virtual Machine)の略でlinuxカーネル上で動作する仮想化技術であり,カーネルをハイパーバイザとして機能させる.