【OpenStack共同検証ラボ】
OpenStack監視・ログ分析基盤の作り方
NECネッツエスアイ株式会社
畠 泰三
2
はじめに
自己紹介
畠 泰三(はた たいぞう)
-NECネッツエスアイ(NESIC)所属
技術分野:
-サーバー・仮想化・ストレージ・監視
ただいま、VTJ様でお勉強中
3
ディストリビュータさ
んサイトにも
めぼしい情報が。。
きっかけ
4
OpenStackを運用しようとした時・・・・
・どこを監視するんだろ?
・ログチェックってどうするんだろ?
に対するこれを〜して〜するとできます!
といった情報が無くて困ったので基盤を
作ってみました。
ググっても事例
しかヒットしない
情報が欲しい
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
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)
何をやった?
7
OpenStack共同検証ラボの取り組みとして、
監視・ログ分析ができる基盤の作り方を検証しました。
検証した内容はOSSのように公開します。
#ブラッシュアップに皆様のお力をいただけると嬉しいです。
情報が
欲しい
情報が
欲しい
公開するもの
8
[ドキュメント]
・OpenStack監視・ログ分析基盤のセットアップ手順書
[ログ収集]
・Fluentd設定ファイル
#Black/Whiteリストも今後公開していきます。
[監視]
・Zabbix監視テンプレート
・監視スクリプト(API,MessageQue)
GitHubにて公開
https://github.com/openstack-lab
コントローラノード
コントローラノード
運用している環境
9
OpenStackコントローラ × 3台 , コンピュート x 2台
(OpenStack-Ansible Kilo)
ログ分析 x 1台 , 監視 x 1台
コントローラ
glance
galera
keystone
nova
controller
neutron horizon
heat
memcached rabbitmq
コンピュート
nova
compute
ログ分析 監視
Zabbix
Hatohol Kibana
Elasticserch
監視・ログ分析フロー図
10
ログ分析サーバ
監視サーバ
(Agent)
(Server)
監視・ログ分析フロー(ログ)
11
ログ分析サーバ
監視サーバ
(Agent)
(Server)
ログ収集/
タグ付け/転送・
Whiteリスト定義
ログ集約・
Elasticserchへ
ログ格納
ログ
蓄積/分析
分析結果
可視化・
Blackリスト定義
監視・ログ分析フロー(監視)
12
ログ分析サーバ
(Agent)
(Server)
各項目の監視
複数のZabbix GUI
をまとめて表示
Slackに障害発生
を通知
監視サーバ
Redmineに障害発生
チケット作成
13
ログ
監視
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
ログ分析① 大量のログファイル
ログ分析② 出力パターンの揺れ
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._・・・
同じコンポーネントでもサービス毎にフォーマットの揺れがあり
について
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>
設定例
について
17
Elasticserchとは・・・elastic社が開発している
ビックデータの蓄積・解析が行えるOSS
Kibanaによって解析結果の可視化が可能
"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“
・
・
どう集めた?
18
ログ分析サーバ
Log 1 Log 2 Log 3 ① コンポーネントのログを収集
② ログの内容を正規表現でタグ付け
③ ログサーバに転送・集約
④ Elasticserchに格納
①
②
③
④
fluentdを使って
各コンポーネントからログ収集
なんでタグをつけるの?
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:27
level: Warning
message: nova.scheduler~Error
time: 2016-07-15 18:00
level: Error
message: nova.API~
MessageにErrorを含む
ログ=1件
タグ付け
結果
20
Demo
どうチェックする?
21
ログに
[ignore]タグを付加
表示したい項目をルール定義 問題無いログに[ignore]タグ付与
して保存
↓
Kibanaのルールで[ignore]タグを
除外して表示
① 過去[1日]の[Level]が[Error]
以上のログを表示
② 過去[1日]の[message]に
[nova]と[~~~]を含むログを表示
Blackリスト
ルール
①
ルール
②
Whiteリスト
22
ログ
監視
監視① 監視項目が多い
23
コンポーネント・サービス毎に監視項目(プロセス・ポート)定義が必要。
そのため、監視項目は小規模な環境でも多い。
24
OpenStack-Ansible
プロセス名 実際に動いているプロセス名
nova-api nova-api-os-
compute
nova-api-metadata
nova-api-os-
compute
nova-api
keystone keystone-ad
keystone-se
keystone-ad
keystone-pu
keystone-all
ディストリビューション毎・インストール方法によって
監視対象プロセス確認及び監視対象の変更が必要。
監視② プロセス名が変わる
各操作の裏でAPIが叩かれる。
APIダウン時は、命令リクエストが送信できず、操作不能となるため、
スクリプトで状態監視を実施
監視③ API監視の必要性
25
nova-
API
Message
Que
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に送信されない
リクエスト
はないな
新規
リクエストは
ないな
リクエストが
来るまで何も
しない
nova-boot
リクエスト
全てのコンポーネント・サービス間通信はMessageQueを介する。
キューが溜まりすぎると命令リクエストが正常に処理されず、
システム全体の動作が不安定となりやすいため、
スクリプトで監視を実施
監視④ MessageQue監視の必要性
26
nova-
API
Message
Que
参考: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
リクエスト
27
まとめ
できたこと
[共通]
• 手順/設定ファイル公開
• 基盤構築手順 確立
[ログ分析]
• 34ファイル分のfluentd設定ファイル作成
• Kibanaでログ分析開始
[監視]
• OpenStackの監視ポイント
(プロセス・ポート・API・MessageQue)洗い出し/監視項目定義28
今後の取り組み
• Chaosmonky等で、常に障害を発生させる。
→監視アイテムやタグ付けルールの精度向上
• ログ解析ツール(Kibana)のユースケース/ルールの検討
• fluentdとKibanaのBlack/White リスト の追加
FluentFormatterの調査・検証・組み込み
• API監視の深掘り
– API応答速度、複数API組み合わせた処理の監視
29
30
宣伝
OpenStack共同検証ラボ
31
現在4社でコラボ中。
OpenStack共同検証ラボとは?
32
ブロードバンドタワー(BBT)様のDCで
OpenStackやSDN/NFVの評価検証から
DevOps的運用管理などのノウハウ蓄積&公開を
行っています。
#参加費用は無料です。
〜のノウハウが
自社に少ない・・
33
〜はどう使えば
運用しやすい?
〜をやるのに他
の人と話したい
お仲間募集中です!
ご興味のある方かはお気軽にお声がけください
検証機材
が・・
〜の技術を
検証したい
34
資料
OpenStack-Ansible構築手順書
35
OpenStack-Ansible構築手順書(Kilo/Mitaka)公開中
(http://enterprisecloud.jp/installguide-openstack-ansible/)
について
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が持つ監視
データを閲覧可能
フィルタ

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