Openstack日誌
日誌對於一個穩定的系統來說相當重要,對於OpenStack這樣一個大型的系統,日誌當然也是必不可少,理解Openstack系統的日誌對於保證OpenStack環境穩定非常重要。對於出現系統錯誤,查看日誌是一個很好的習慣。
OpenStack通過生成大量日誌信息來幫助排查系統安裝運行期間出現的問題,接下來介紹幾個常見服務的相關日誌位置。
Nova日誌
OpenStack計算服務日誌位於/var/log/nova,默認權限擁有者是nova用戶。需要注意的是,並不是每臺服務器上都包含所有的日誌文件,例如nova-compute.log僅在計算節點生成。
- nova-api.log:用戶與OpenStack交互以及OpenStack組件間交互的消息相關日誌
- nova-compute.log:虛擬機實例在啓動和運行中產生的日誌
- nova-scheduler.log:有關調度的,分配任務給節點以及消息隊列的相關日誌
- nova-conductor.log:nova-compute和數據庫操作均通過conductor實現
- nova-consoleauth.log:關於nova-console服務的驗證細節
- nova-manage.log:運行nova-manage命令時產生的日誌
- nova-novncproxy.log:關於nova的VNC服務的詳細信息
Dashboard是一個DJango的web應用程序,默認運行在Apache服務器上,相應的運行日誌也都記錄在Apache的日誌中,用戶可以在/var/log/apache2/中查看。
存儲日誌
對象存儲Swift默認日誌寫到syslog中,在Ubuntu系統中,可以通過/var/log/syslog查看,在其他系統中,可能位於/var/log/messages中。
塊存儲Cinder產生的日誌默認存放在/var/log/cinder目錄中
- cinder-api.log:關於cinder-api服務的細節
- cinder-scheduler.log:關於cinder調度服務的操作的細節
- cinder-volume.log:與cinder卷服務相關的日誌項
Keystone日誌
身份認證Keystone服務的日誌記錄在
/var/log/apache2/keystone_access.log
/var/log/apache2/keystone.log
Glance日誌
鏡像服務Glance的日誌默認存放在/var/log/glance目錄中
- api.log:Glance API相關的日誌
- registry.log:Glance registry服務相關的日誌
根據日誌配置的不同,會保存諸如元信息更新和訪問記錄這些信息。
Neutron日誌
網絡服務Neutron的日誌默認存放在/var/log/neutron目錄中
- dhcp-agent.log:關於dhcp-agent的日誌
- l3-agent.log:與l3代理及其功能相關的日誌
- neutron-metadata-agent.log:通過neutron代理給Nova元數據服務的相關日誌
- openvswitch-agent.log:與openvswitch相關操作的日誌項,在具體實現OpenStack網絡時,如果使用了不同的插件,就會有相應的日誌文件名
- neutron-server.log:與Neutron API服務相關的日誌
改變日誌級別
每個OpenStack服務的默認日誌級別均爲警告級(Warning),該級別的日誌對於瞭解運行中系統的狀態或者基本的錯誤定位已經夠用,但是有時候需要上調日誌級別來幫助診斷問題,或者下調日誌級別以減少日誌噪聲。由於各個服務的日誌設置方式類似,因此這裏就以Nova服務爲例。
設置Nova服務的日誌級別
vi /etc/nova/logging.conf
將列出的服務的日誌級別修改爲DEBUG、INFO或WARNING
[logger_root]
level = WARNING
handlers = null
[logger_nova]
level = INFO
handlers = stderr
qualname = nova
......
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
設置其他OpenStack服務中的日誌級別
其他服務(如Glance和Keystone)目前都在它們的主配置文件中設置了日誌級別,例如/etc/glance/glance-api.conf。可以通過修改這些文件中對應設置來將日誌級別調整到DEBUG:
[DEFAULT]
#set DEBUG log level output
debug = True
- 1
- 2
- 3
以上內容轉載自:http://blog.csdn.net/henulwj/article/details/47953989,並有一些小的改動。
logrotate
logrotate 程序是一個日誌文件管理工具。用來把舊的日誌文件刪除,並創建新的日誌文件,我們把它叫做“轉儲”。我們可以根據日誌文件的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程序來執行。OpenStack的日誌,也是由它管理。
logrotate 的配置文件是 /etc/logrotate.conf。主要參數如下:
daily: 日誌文件每天進行滾動
missingok: 如果找不到這個log檔案,就忽略過去
rotate: 保留最進52次滾動的日誌
compress: 通過gzip壓縮轉儲以後的日誌
delaycompress: 和compress一起使用時,轉儲的日誌文件到下一次轉儲時才壓縮
notifempty 如果是空文件的話,不轉儲
create mode owner group:轉儲文件,使用指定的文件模式創建新的日誌文件
sharedscripts: 運行postrotate腳本(該腳本作用爲讓nginx重新生成日誌文件)
postrotate/endscript: 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
root@controller:/etc/logrotate.d# ls
aodh-common apt cinder-common keystone libvirtd.lxc mongodb-server nova-common ppp ufw
apache2 aptitude dpkg libvirtd libvirtd.qemu mysql-server openvswitch-switch rabbitmq-server unattended-upgrades
apport ceilometer-common glance-common libvirtd.libxl libvirtd.uml neutron-common pm-utils rsyslog upstart
root@controller:/etc/logrotate.d# cat nova-common
/var/log/nova/*.log {
daily
missingok
compress
delaycompress
copytruncate
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
根據上面的配置可以知道nova-*.log 是每天轉存並且壓縮。
logrotate默認被加入到cron的/etc/cron.daily中作爲每日任務執行,配置定義在:
/etc/cron.daily/logrotate
查看logrotate最近進行了哪些日誌歸檔:
less /var/lib/logrotate/status
......
"/var/log/neutron/openvswitch-agent.log" 2017-3-17-6:53:6
"/var/log/neutron/neutron-ns-metadata-proxy-9615cb3b-b774-466a-8932-1830a7e9cf98.log" 2017-2-17-6:27:37
"/var/log/nova/nova-novncproxy.log" 2017-3-28-6:43:1
"/var/log/ufw.log" 2017-3-28-6:0:0
"/var/log/unattended-upgrades/unattended-upgrades.log" 2017-3-28-6:0:0
"/var/log/aodh/aodh-expirer.log" 2017-3-28-6:43:1
"/var/log/neutron/ovs-cleanup.log" 2017-2-22-6:41:51
"/var/log/libvirt/qemu/instance-00000013.log" 2016-11-10-6:0:0
"/var/log/mysql/error.log" 2017-3-28-6:43:1
"/var/log/mail.err" 2017-3-28-6:0:0
"/var/log/cinder/cinder-api.log" 2017-3-17-6:53:6
"/var/log/upstart/ceilometer-api.log" 2017-3-28-6:43:1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
查看/etc/cron.daily每日任務是什麼時候運行的:
cat /etc/crontab
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
- 1
- 2
- 3
- 4
- 5
- 6