Upload
virtualtech-japan-inc
View
2.348
Download
0
Embed Size (px)
Citation preview
【 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
novacontroller neutron horizon
heat
memcached rabbitmq
コンピュート
novacompute
ログ分析 監視
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 社が開発しているビックデータの蓄積・解析が行える 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“ ・ ・
どう集めた?
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:27level: Warningmessage: nova.scheduler~Error
time: 2016-07-15 18:00level: Errormessage: 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-computenova-api-metadata
nova-api-os-compute
nova-api
keystone keystone-adkeystone-se
keystone-adkeystone-pu
keystone-all
ディストリビューション毎・インストール方法によって監視対象プロセス確認及び監視対象の変更が必要。
監視② プロセス名が変わる
各操作の裏で 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に送信されない
リクエストはないな
新規リクエストはないな
リクエストが来るまで何もしない
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リクエスト
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 が持つ監視データを閲覧可能
フィルタ