ITの窓辺から

三流IT技術者の日常

Pythonを始める

今回はSplunkから離れて雑記です。
オライリーの本を物色していたら「退屈なことはPythonにやらせよう」という本を見つけまして、CDのジャケ買いよろしく本の名前買いしました。もちろん電子書籍です。ざっと目次を見る限り、バリバリのプログラマ向けというよりOffice製品のVBAに多少関心がある人くらいのレベルの人向けに書かれているような印象です。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 丁度Pythonを勉強しようと思っていたので、この本を一通りやってみてPython入門を果たしてみます。そんなわけでMacにPython3.6をインストールしてHello World

とりあえずこういう書籍によくある初めの方の基本的な文法を試してみました。気になったのは下記の内容でしょうか。

  • C言語に馴染みがあると行末にコロンがないのに違和感。
  • 配列のスライスが異常に楽。
  • 文字列操作が異常に楽。
  • 厳密な型がないと不安に襲われる。

次ファイルの読み書き関連のようです。日曜に一気にやってしまおう。
本の後ろの方のページを見るとWindowsで役立ちそうなことが多そうにも見えますね。Office製品との連携が多そうなのでVBAでやれば良いじゃんと思う人もいるかもしれません。そこをあえてPythonでやることで他の分野でもPythonを使えるようにしていこうと考えればあながち無駄でもないとプラス思考。

Pythonの言語仕様を真面目に勉強しようと思ったらこの本は向いていないと思います。ただプログラムに馴染みが全くない人でも多分簡単なテキストファイル加工ならできるようになるように書かれている感があります。頭の体操と考えてちょっとプログラミングをやってみようという人にはちょうど良いです。この内容が理解できるようになったら、書き方は違えどVBAもすぐできるようになると思いますので、事務系の仕事をしている人も仕事の効率化ができるのではないでしょうか。

ところでPython + 機械学習 + 統計処理 + Splunkってやたら相性良さそうですよね。Pythonに関心を持っていたのも利用者レベル程度には機械学習に馴染んでおく必要があると考えていたからです。情報工学と統計を真面目に勉強しておけば良かったと後悔しています。 さらに最近ITインフラ周り、しかもネットワークや仮想基盤サーバ関連の仕事ばっかりだったため、そもそもプログラミングもご無沙汰状態です。忘れかけている数学や統計知識を思い出しつつプログラミングのリハビリにかかろうかと思います。

特にテーマなく適当に記事を書こうとすると大変ですね。無意味に長くメールを書く人を連想してしまいちょっと自己嫌悪です。

Splunkのダッシュボード

連続Splunk。バージョンは7.1.1です。

今回はSplunkのダッシュボード機能を使用してみます。ダッシュボードとは何かと説明せよと言われると少し困りますが、とにかくグラフや表等を1画面に集約してサマリした画面です。

ダッシュボードを作る前に、ちょっと小話。唐突ですがダッシュボード機能を使えることが最終目的ではありません。Splunkにログを集約することで、下記の3個を実現することが目的です。

  • ITインフラ稼働状況について業務上報告が必要な事項を自動整形、自動出力
  • セキュリティインシデント時の調査工数を低減
  • 定義した閾値に到達するようなログを検知した場合に必要な処理を自動化

ダッシュボードは1つ目の目的を実現するための手段の一つと考えています。ダッシュボードの作り方は正直Splunkの道具としての使い方であって、何をダッシュボードに表示させれば良いか考えることに比べると大した難易度ではない、はずです。言いたいことを書き終えたので早速ダッシュボード作成に入りましょう。

ダッシュボードの作成

検索画面の上部にダッシュボードというメニューがあります。

f:id:ReaLiZeZNSG:20180703235514p:plain

ダッシュボードに名前をつけ、ダッシュボードを作成します。

f:id:ReaLiZeZNSG:20180703235641p:plain

以下のようにダッシュボードができあがりました。

f:id:ReaLiZeZNSG:20180703235801p:plain

以上完了、というわけではなく、内容が何もないダッシュボードが出来上がっただけです。ここは画面の指示の通り、同じ画面に表示されている「パネルの追加」からダッシュボードに表示するパネル(と呼ぶらしいです)を設定します。例えばこんな画面があるようです。

f:id:ReaLiZeZNSG:20180704000133p:plain

今回は円グラフ(Pie Chart)を選択し、前回の記事で作成した円グラフをダッシュボードに追加することにします。サーチ文字列に「sourcetype="squid-test-01" | chart count over Squid_HTTP_DstURL by source 」を入力します。細かい内容は前回の記事を参照して下さい。

 

realizeznsg.hatenablog.com円グラフをダッシュボードに追加すると、Squid Test Dashboardはすっからかんの状態から以下のようになりました。

f:id:ReaLiZeZNSG:20180704000730p:plain

 次はこの円グラフの下にHTTPステータスコードごとの出現回数をまとめた表を表示させます。先程と同様にパネルの追加からStatistics Tableを選び、サーチ文字列は以下のようにします。

f:id:ReaLiZeZNSG:20180704231116p:plain

表示は下記のようになります。

f:id:ReaLiZeZNSG:20180704231320p:plain

 次はsquid01.logに含まれるログの件数を単純に表示させます。やはり同様にパネルの追加からSingle Valueを選び、サーチ文字列は単純にソースを指定した上でchart countにパイプで渡します。表示は下記のようになります。

f:id:ReaLiZeZNSG:20180704231631p:plain

入力フォームの作成

閲覧者に入力させ、ダッシュボードの内容をダイナミックに変えるようなギミックを作成できます。今回は宛先URLを入力すると、そのURLへのアクセス回数(マッチするログの数)を先程のSingle Valueに表示させるような仕組みを作ってみます。

パネルの追加の隣にある入力の追加を選びます。以下のようなメニューが表示されるのでテキストを選びます。

f:id:ReaLiZeZNSG:20180704232017p:plain

するとすぐに入力フォームが作成されます。鉛筆ボタンからフォームの設定ができます。

f:id:ReaLiZeZNSG:20180704232204p:plain

以下のように設定します。

f:id:ReaLiZeZNSG:20180704232320p:plain

トークンはこのフォームに入力された内容が格納される変数名です。デフォルトはこのトークンのデフォルト値、初期値はこのフォームが読み込まれた時に入力される値です。また、今回はフォームに入力されたら即座にアクセス数の表示を変更させたいので、変更時にサーチにチェックを入れます。

続いてアクセス数のパネルのサーチコマンドを変更します。作成済みのパネルの設定変更は虫眼鏡アイコンのサーチの編集から実行できます。今回は下記のように変更します。

f:id:ReaLiZeZNSG:20180704232740p:plain

フォームに入力された文字列はInput_Squid_DstURLに格納され、フィールド「Squid_HTTP_DstURL」にマッチするログのカウントを行うようになります。Input_Squid_DstURLを変数として使用する場合は両端を「$」で囲みます。

設定ができたらwww.bing.comにポート443でアクセスした件数を数えてみましょう。フォームにwww.bing.com:443と入力します。

f:id:ReaLiZeZNSG:20180704233144p:plain

アクセス数が変化しました。32回のアクセスがあったことが分かります。当然ながら普通にサーチコマンドで検索した結果のログ数と一致します。

ダッシュボードへのアクセス

デフォルト設定では、作成したダッシュボードへのアクセスは結構手間がかかります。よく使うダッシュボードはSplunkのトップページに表示させてすぐに見られるようにした方が良いでしょう。

Splunkのトップページにこんなボタンがあります。

f:id:ReaLiZeZNSG:20180704233537p:plain

先程作ったSquid Test Dashboardを指定します。

f:id:ReaLiZeZNSG:20180704233647p:plain

シンプルXMLダッシュボードのみ、というよくわからない制限が記載されています。何の事かよくわからないので今度調べようと思います。

するとトップページにダッシュボードが表示されます。

f:id:ReaLiZeZNSG:20180704233852p:plain

んで

やってることはしょうもないですが、だんだん形になってきた感があります。次回はログの入力方法に立ち返った記事を書きます。しばらく使っているサンプルログはある瞬間に取ってきたSquidaccess.logを手動で加工してテキストファイルとして保存したものという、あまり頭の良くない感じでやってきました。これからはSplunkにはリモートホストのログを取得する方法が色々と用意されているので、それを活用していきます。