【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 -...

36
OpenStack 共共共共共共OpenStack 共共 共共共共共共共共共共 NEC 共共共共共共共共共共共 共共

Transcript of 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 -...

Page 1: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

【 OpenStack 共同検証ラボ】OpenStack 監視・ログ分析基盤の作り

NEC ネッツエスアイ株式会社畠 泰三

Page 2: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

2

はじめに

Page 3: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

自己紹介

畠 泰三(はた たいぞう) -NEC ネッツエスアイ( NESIC) 所属

技術分野:  - サーバー・仮想化・ストレージ・監視 ただいま、 VTJ 様でお勉強中

3

Page 4: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

ディストリビュータさんサイトにもめぼしい情報が。。

きっかけ

4

OpenStack を運用しようとした時・・・・

・どこを監視するんだろ?・ログチェックってどうするんだろ?

に対するこれを〜して〜するとできます!といった情報が無くて困ったので基盤を作ってみました。

ググっても事例しかヒットしない

情報が欲しい

Page 5: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

OpenStack ログ事情①

5

サービス ログファイルNova(7 ファイル )

/var/log/nova/nova-api-metadata.log/var/log/nova/nova-compute.log/var/log/nova/nova-scheduler.log/var/log/nova/nova-api-os-compute.log/var/log/nova/nova-cert.log/var/log/nova/nova-conductor.log/var/log/nova/nova-consoleauth.log

Keystone(3 ファイル )

/var/log/keystone/keystone-apache-error.log/var/log/keystone/keystone.log/var/log/keystone/ssl_access.log

Neutron(9 ファイル )

/var/log/neutron/neutron-dnsmasq.log/var/log/neutron/neutron-ha-tool.log/var/log/neutron/neutron-dhcp-agent.log/var/log/neutron/neutron-l3-agent.log/var/log/neutron/neutron-linuxbridge-agent.log/var/log/neutron/neutron-metadata-agent.log/var/log/neutron/neutron-metering-agent.log/var/log/neutron/neutron-ns-metadata-proxy-*.log/var/log/neutron/neutron-server.log

Glance(2 ファイル )

/var/log/glance/glance-api.log/var/log/glance/glance-registry.log

Horizon(2 ファイル )

/var/log/horizon/horizon-error.log/var/log/horizon/ssl_access.log

サービス ログファイル

Cinder(3 ファイル )

/var/log/cinder/cinder-volume.log/var/log/cinder/cinder-scheduler.log/var/log/cinder/cinder-api.log

RabbitMQ(6 ファイル )

/var/log/rabbitmq/rabbit*rabbit_mq_*.log/var/log/rabbitmq/rabbit*_rabbit_mq_*sasl.log/var/log/rabbitmq/shutdown_log/var/log/rabbitmq/shutdown_err/var/log/rabbitmq/startup_log/var/log/rabbitmq/startup_err

GaleraCluster(1 ファイル )

/var/log/mysql_logs/galera_server_error.log

Memcached(1 ファイル )

/var/log/memcached.log

計 34 ファイル + syslog

Page 6: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

OpenStack ログ事情②

6

引用: http://www.slideshare.net/VirtualTech-JP/ntt-openstack-summit-2015-tokyo-after-one-year-of-openstack-cloud-operation-ntt-docomo

ログ出力数80M 行&100GB/ 日( 内クリティカル0 )

Page 7: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

何をやった?

7

OpenStack 共同検証ラボの取り組みとして、監視・ログ分析ができる基盤の作り方を検証しました。

検証した内容は OSS のように公開します。# ブラッシュアップに皆様のお力をいただけると嬉しいです。

情報が欲しい

情報が欲しい

Page 8: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

公開するもの

8

[ ドキュメント ]・ OpenStack 監視・ログ分析基盤のセットアップ手順書

[ ログ収集 ]・ Fluentd 設定ファイル #Black/White リストも今後公開していきます。

[ 監視 ]・ Zabbix 監視テンプレート・監視スクリプト (API,MessageQue)

GitHub にて公開https://github.com/openstack-lab

Page 9: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

9コントローラノード

コントローラノード

運用している環境OpenStack コントローラ × 3 台 , コンピュート x 2 台(OpenStack-Ansible Kilo)

ログ分析 x 1台 , 監視 x 1 台

コントローラ

glance

galera

keystone

novacontroller neutron horizon

heat

memcached rabbitmq

コンピュート

novacompute

ログ分析 監視

Zabbix

Hatohol Kibana

Elasticserch

Page 10: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

監視・ログ分析フロー図

10

ログ分析サーバ

監視サーバ

(Agent)

(Server)

Page 11: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

監視・ログ分析フロー ( ログ )

11

ログ分析サーバ

監視サーバ

(Agent)

(Server)

ログ収集 /タグ付け / 転送・ White リスト定義

ログ集約・Elasticserchへログ格納

ログ蓄積 / 分析

分析結果可視化・Black リスト定義

Page 12: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

監視・ログ分析フロー ( 監視 )

12

ログ分析サーバ

(Agent)

(Server)

各項目の監視

複数の Zabbix GUIをまとめて表示

Slack に障害発生を通知

監視サーバ

Redmine に障害発生チケット作成

Page 13: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

13

ログ監視

Page 14: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

14

サービス ログファイルNova(7 ファイル )

/var/log/nova/nova-api-metadata.log/var/log/nova/nova-compute.log/var/log/nova/nova-scheduler.log/var/log/nova/nova-api-os-compute.log/var/log/nova/nova-cert.log/var/log/nova/nova-conductor.log/var/log/nova/nova-consoleauth.log

Keystone(3 ファイル )

/var/log/keystone/keystone-apache-error.log/var/log/keystone/keystone.log/var/log/keystone/ssl_access.log

Neutron(9 ファイル )

/var/log/neutron/neutron-dnsmasq.log/var/log/neutron/neutron-ha-tool.log/var/log/neutron/neutron-dhcp-agent.log/var/log/neutron/neutron-l3-agent.log/var/log/neutron/neutron-linuxbridge-agent.log/var/log/neutron/neutron-metadata-agent.log/var/log/neutron/neutron-metering-agent.log/var/log/neutron/neutron-ns-metadata-proxy-*.log/var/log/neutron/neutron-server.log

Glance(2 ファイル )

/var/log/glance/glance-api.log/var/log/glance/glance-registry.log

Horizon(2 ファイル )

/var/log/horizon/horizon-error.log/var/log/horizon/ssl_access.log

サービス ログファイル

Cinder(3 ファイル )

/var/log/cinder/cinder-volume.log/var/log/cinder/cinder-scheduler.log/var/log/cinder/cinder-api.log

RabbitMQ(6 ファイル )

/var/log/rabbitmq/rabbit*rabbit_mq_*.log/var/log/rabbitmq/rabbit*_rabbit_mq_*sasl.log/var/log/rabbitmq/shutdown_log/var/log/rabbitmq/shutdown_err/var/log/rabbitmq/startup_log/var/log/rabbitmq/startup_err

GaleraCluster(1 ファイル )

/var/log/mysql_logs/galera_server_error.log

Memcached(1 ファイル )

/var/log/memcached.log

計 34 ファイル + syslog

ログ分析① 大量のログファイル

Page 15: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

ログ分析② 出力パターンの揺れ

15

ログ名 タグ付けパターン タグ付け結果neutron-dnsmasq.log

^(?<time>.+[0-9]{2}(:[0-9]{2}){2}) (?<process>[^ ]+)\[(?<pid>[0-9]+)\]:\s(?<message>.+)$

[time] May 7 14:13:28[process] dnsmasq-dhcp[pid] 19663[message] DHCPACK(ns-09 ・・・

neutron-ha-tool.log

^(?<time>[0-9]{2}-[0-9]{2}\s[0-9]{2}:[0-9]{2}) (?<process>[^ ]+) (?<type>[^ ]+) (?<message>.+)$

[time] 05-17 18:55[process] neutron-ha-tool[type] DEBUG[message] list_agents: {u‘a ・・・

neutron-dhcp-agent.log

^(?<time>[0-9]{4}-[^ ]* [^ ]*) (?<pid>[^ ]*) (?<level>[^ ]*) (?<message>.*)$

[time] 2016-05-17 17:00:39.106[pid] 2853[level] ERROR[message] oslo_messaging._ ・・・

同じコンポーネントでもサービス毎にフォーマットの揺れがあり

Page 16: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

について

16

Fluentd とは・・・ TREASURE DATA 社が開発しているログファイルの収集・転送・集約が行える OSSログに正規表現でタグを付けし意味を付与し、収集・集約ができる

<source> type tail path /var/log/nova/nova-compute.log pos_file /var/log/td-agent/nova-compute.log

format /^(?<time>[0-9]{4}-[^ ]* [^ ]*) (?<pid>[^ ]*) (?<level>[^ ]*) (?<message>.*)$/

time_format %Y-%m-%d %H:%M:%S.%L tag nova.log.nova-compute.log</source>

設定例

Page 17: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

について

17

Elasticserch とは・・・ elastic 社が開発しているビックデータの蓄積・解析が行える OSSKibana によって解析結果の可視化が可能

"nova": { "properties": { "@timestamp": { "format": "strict_date_optional_time||epoch_millis", "type": "date" }, "level": { "type": "string" }, "pid": { "type": "string" }, "log_tag": { "type": "string" }, "message": { "type": "string“  ・  ・

Page 18: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

どう集めた?

18

ログ分析サーバ

Log 1 Log 2 Log 3 ①  コンポーネントのログを収集②  ログの内容を正規表現でタグ付け③  ログサーバに転送・集約④   Elasticserch に格納

①②

fluentd を使って各コンポーネントからログ収集

Page 19: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

なんでタグをつけるの?

19

2016-07-15 17:27 Warning nova.scheduler…   Compute_service Error ・・2016-07-15 18:00 Error nova.api…   API_service ・・

Elasticserch でタグ単位でデータの絞り込み・解析可能

time: 2016-07-15 17:27level: Warningmessage: nova.scheduler~Error

time: 2016-07-15 18:00level: Errormessage: nova.API~

Message に Error を含む ログ=1件

タグ付け結果

Page 20: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

20

Demo

Page 21: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

どうチェックする?

21

ログに[ignore] タグを付

表示したい項目をルール定義 問題無いログに [ignore] タグ付与して保存          ↓Kibana のルールで [ignore] タグを除外して表示

①  過去 [1 日 ] の [Level] が[Error] 以上のログを表示②  過去 [1 日 ] の [message]に [nova] と [~~~] を含むログを表示

Black リスト

ルール  ①

ルール  ②

White リスト

Page 22: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

22

ログ監視

Page 23: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

監視① 監視項目が多い

23

コンポーネント・サービス毎に監視項目 ( プロセス・ポート ) 定義が必要。そのため、監視項目は小規模な環境でも多い。

Page 24: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

24

OpenStack-Ansible

プロセス名

実際に動いているプロセス名

nova-api nova-api-os-computenova-api-metadata

nova-api-os-compute

nova-api

keystone keystone-adkeystone-se

keystone-adkeystone-pu

keystone-all

ディストリビューション毎・インストール方法によって監視対象プロセス確認及び監視対象の変更が必要。

監視② プロセス名が変わる

Page 25: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

各操作の裏で API が叩かれる。APIダウン時は、命令リクエストが送信できず、操作不能となるため、スクリプトで状態監視を実施

監視③ API 監視の必要性

25

nova-API

MessageQue

Horizon

コマンド

参考: http://openstack.jp/assets/files/20121216/osc2012cloudjosugamqpv2-121216085708-phpapp02.pdf

API

API

API

nova-scheduler

nova-compute

nova-bootリクエスト

nova-boot実行

APIがダウンしているため、nova-bootリクエストがMeesageQueに送信されない

リクエストはないな

新規リクエストはないな

リクエストが来るまで何もしない

Page 26: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

nova-bootリクエスト

全てのコンポーネント・サービス間通信は MessageQue を介する。キューが溜まりすぎると命令リクエストが正常に処理されず、システム全体の動作が不安定となりやすいため、スクリプトで監視を実施

監視④ MessageQue 監視の必要性

26

nova-API

MessageQue参考: http://openstack.jp/assets/files/20121216/osc2012cloudjosugamqpv2-121216085708-phpapp02.pdf

nova-scheduler

cinder-scheduler

nova-bootリクエスト

nova-boot実行

nova-bootリクエス

トnova-bootリクエス

トnova-bootリクエス

トnova-bootリクエス

cinder-list実行

cinder-API

cinder-listリクエスト

キューが溢れると新規命令リクエストが受け付けられない

nova-bootリクエスト

MessageQueが溢れる

cinder-listリクエスト

cinder-listリクエスト

cinder-listリクエスト

Page 27: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

27

まとめ

Page 28: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

できたこと

[ 共通 ]• 手順 / 設定ファイル公開• 基盤構築手順 確立 

[ ログ分析 ]• 34 ファイル分の fluentd 設定ファイル作成• Kibana でログ分析開始

[ 監視 ]• OpenStack の監視ポイント  ( プロセス・ポート・ API ・ MessageQue)洗い出し / 監視項目定義 28

Page 29: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

今後の取り組み• Chaosmonky等で、常に障害を発生させる。 →監視アイテムやタグ付けルールの精度向上

• ログ解析ツール (Kibana) のユースケース / ルールの検討

• fluentd と Kibana の Black/White リスト の追加  FluentFormatter の調査・検証・組み込み

• API 監視の深掘り– API応答速度、複数 API 組み合わせた処理の監視

29

Page 30: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

30

宣伝

Page 31: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

OpenStack 共同検証ラボ

31

現在4社でコラボ中。

Page 32: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

OpenStack 共同検証ラボとは?

32

ブロードバンドタワー (BBT) 様の DC で

OpenStack や SDN/NFV の評価検証から

DevOps的運用管理などのノウハウ蓄積&公開を行っています。

#参加費用は無料です。

Page 33: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

〜のノウハウが自社に少ない・・

33

〜はどう使えば運用しやすい? 〜をやるのに

他の人と話したい

お仲間募集中です!ご興味のある方かはお気軽にお声がけください

検証機材が・・

〜の技術を検証したい

Page 34: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

34

資料

Page 35: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

OpenStack-Ansible構築手順書

35

OpenStack-Ansible構築手順書 (Kilo/Mitaka) 公開中(http://enterprisecloud.jp/installguide-openstack-ansible/)

Page 36: 【OpenStack共同検証ラボ】OpenStack監視・ログ分析基盤の作り方 - OpenStack最新情報セミナー(2016年7月)

について

36

Hatohol とは・・・ MIRACLE LINUX 社が開発しているOSS複数の Zabbix ・ Nagios の GUI を1つにまとめて表示ができる

Zabbix Zabbix Zabbix

表示しているZabbixの画面多いな。。

リージョン A

リージョン B

リージョン C

Zabbix Zabbix Zabbix

リージョン A

リージョン B

リージョン C複数の Zabbix か

ら監視データを取得・集約

運用ダッシュボード

( Hatohol )

Hatohol に登録されているZabbix が持つ監視データを閲覧可能

フィルタ