TL;DR
IBM Cloudと統合されたログ収集プラットフォームLogDNAを使ってIBM Cloud IaaSのVirtual Server Instance(仮想サーバー)上のRHEL7のOSログ監視をしてみました。
LogDNAって何?
LogDNAは2015年に米カリフォルニア州マウンテンビューで設立されたSaaS型のログ収集プラットフォームです。
- システムおよびアプリケーションの問題をデバッグするためのログ管理および分析
- 最新のコンテナベースのアプリケーションに最適化
- 何百ものカスタム統合を使用してあらゆるプラットフォームから収集および集約する機能
- SaaSと分離/オンプレミスへのデプロイ・オプション
- 1,500の有料顧客あり
- ロゴ:
LogDNAは、以下のような特長を持っています。
- スタンダードなElasticよりもスケーラビリティのある高速検索
- HIPAAとSOC2に準拠、GDPR/PCI-DSSにも対応(予定)
- 電子メール、Slack、HipChat、Webhook、PagerDuty、OpsGenieとのアラート統合
- Google検索のような簡易検索
- ログ・テーリング
- IBM Cloud、Heroku、Manifoldといったクラウド・ベンダーとの統合
IBM Cloudと統合されたLogDNAを使うと以下のようなメリットがあります。
- 完全集中型ログ管理:すべてのログデータを一箇所に集約
- 柔軟な保存期間:ログ検索のための7、14および30日
- リアルタイムのライブテールおよびフィルタ機能でログイベントを拡大
- 自然言語クエリと超高速検索で問題を迅速に見つけて解決
- Pager Duty、Slack、Webhook、Webhookなどによる通知サポートを使用してアラートを実行
- 30を超える統合と管理対象ソースをサポート
- コンテナ・ベースのアプリケーションに最適化
- GB単位の料金
- IBM CloudのSSOによるエンタープライズグレードの管理、および管理者に対する完全なRBACを提供
- 長期保管のためにIBM Cloud Object Storageにアーカイブ
- アーキテクチャ:
(参考)IBM Log Analysis with LogDNA
https://www.ibm.com/cloud/log-analysis
LogDNAのオーダー
IBM IDでログインして以下よりオーダーします。
https://cloud.ibm.com/catalog?search=LogDNA
サービス名、リージョン、リソースグループを入力して作成ボタンをクリックします。
https://cloud.ibm.com/observe/logging/create
プランを以下から選択します。最初はライト版(無料)でオーダーしてみます。
ネットワーク前提
LogDNA AgentからLogDNAサーバーへの発信トラフィックとして以下のパブリックIPアドレスおよびポートについて、ファイアウォールやセキュリティ・グループであらかじめ許可しておく必要があります。
-
ログ送信のためのIPアドレス
- リージョン:米国南部
- Ingestion endpoint:logs.us-south.logging.cloud.ibm.com
- パブリックIPアドレス:
- 169.48.237.107
- 169.60.166.45
- 169.47.224.77
- ポート:
- TCP 443
- TCP 80
-
LogDNA agentにより利用されるIPアドレス
- リージョン:米国南部
- Authentication endpoint: api.us-south.logging.cloud.ibm.com
- パブリックIPアドレス:
- 169.47.224.74
- 169.60.166.44
- 169.48.237.109
- ポート:
- TCP 443
- TCP 80
最新の情報は以下をご確認ください。
(参考)Managing network traffic
https://console.bluemix.net/docs/services/Log-Analysis-with-LogDNA/network.html#network
LogDNAエージェントの設定
エージェントレスで単純にrsyslog、syslog-ng、syslogから転送することもできますが、ここではLogDNA経由で監視します。エージェントを利用することで幅広いログ収集が可能です。
オーダー後、IBM CloudのダッシュボードにLogDNAが表示されます
エージェントは以下の環境をサポートしています。
- Linux Ubuntu/Debian
- Linux RPM-based
- Kubernetes
今回はREHL7を管理対象とするためRPMベースのエージェントをインストールします。最初にパッケージをインポートします。
# sudo rpm --import https://repo.logdna.com/logdna.gpg
リポジトリーを設定します。
echo "[logdna]
name=LogDNA packages
baseurl=https://repo.logdna.com/el6/
enabled=1
gpgcheck=1
gpgkey=https://repo.logdna.com/logdna.gpg" | sudo tee /etc/yum.repos.d/logdna.repo
エージェントをインストールします。
sudo yum -y install logdna-agent
ダッシュボードに表示されているユニーク・キーを入力します。
# sudo logdna-agent -k XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Your LogDNA Ingestion Key has been successfully saved!
LogDNAのAPIホスト"api.us-south.logging.cloud.ibm.com"を登録します。
# sudo logdna-agent -s LOGDNA_APIHOST=api.us-south.logging.cloud.ibm.com
Config variable: LOGDNA_APIHOST = api.us-south.logging.cloud.ibm.com been saved to config.
LogDNAサーバーのホスト"logs.us-south.logging.cloud.ibm.com"を登録します。
# sudo logdna-agent -s LOGDNA_LOGHOST=logs.us-south.logging.cloud.ibm.com
Config variable: LOGDNA_LOGHOST = logs.us-south.logging.cloud.ibm.com been saved to config.
監視対象ディレクトリを登録します。デフォルトでは/var/log配下が登録されています。
# sudo logdna-agent -d /path/to/log/folders
Log Directories: /path/to/log/folders has been saved to config
エージェントに監視対象サーバーの任意のタグを設定します。ここではmytag, myothertagとしています。
# sudo logdna-agent -t mytag,myothertag
Tags: mytag, myothertag have been saved to config
LogDNAエージェントがOS起動時に自動起動するように設定します。
sudo chkconfig logdna-agent on
LogDNAエージェントを手動で起動します。
sudo service logdna-agent start
LogDNAダッシュボードの表示
ダッシュボードの[All Sourcers]に表示される管理対象サーバーをチェックします。
プランを選択します。
OKをクリックします。
ダッシュボードを開き直します。
トライアル版から有償版に変わったことを確認します。
ログ・レベルを指定してログがダッシュボードに表示されることを確認します。
LogDNAダッシュボードの見方
監視対象ログとして、audit.log, cron, logdna-agent.log, messeagesなどを指定できます。
以下のようなフォーマットでログが可視化されます。
例1)"/var/log/secure"に出力されているパスワード入力エラー
例2)"/var/log/secure"のSSHによる不正アクセスの検知
例3)"/var/log/messeage"に記録されたroot権限によるSSHログイン
例4)"/var/log/messeage"に記録されたタイムゾーンの変更
レポート
様々な切り口でログのレポートを取得することができます。
アーカイブ先
ログ・データのアーカイブ先としてはIBM Cloud Object Storage (ICOS)をはじめ各種クラウド・ストレージを指定できます。
ICOSをオーダーしてバケットを作成の上、必要なバケット名、エンドポイント、APIキー、インスタンスIDを入力します。
IBM Cloud Object Storageのエンドポイントは以下のとおりパブリック、プライベートがありますが、ここではLogDNAのアーカイブ先としてパブリック・エンドポイントを利用しています。
- jp-tok (Public): https://s3.jp-tok.cloud-object-storage.appdomain.cloud
- jp-tok (Private): https://s3.private.jp-tok.cloud-object-storage.appdomain.cloud
アーカイブとして毎晩自動的にログがエクスポートされます。設定が完了すると、エクスポートされたログは24〜48時間以内に以下のような形で表示されます。事前にICOS上にバケットを作成しておく必要があります。
アラート通知
[設定]->[アラート]よりSlackなど外部連携の設定が可能です。
ログのエクスポート
LogDNAのダッシュボード[Export lines]より期間を指定すればログを.jsonlファイルとしてエクスポートし管理者のメール・アドレスに転送することができます。
LogDNAよりデータのダウンロード・リンク付きのメールが送信されます。
48時間有効なリンクからログ・ファイルをダウンロードできます。
JSON Linesは以下のようなフォーマットです。
{"_account":"09a8a8abfe","_cluster":"ld60","_host":"vsi-20180121","_ingester":"agent","_logtype":"syslogline","_mac":"06:87:ca:13:3b:76","_tag":["mytag","myothertag"],"_file":"/var/log/secure","_line":"polkitd[3735]: Unregistered Authentication Agent for unix-process:31232:12724202 (system bus name :1.124, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale ja_JP.UTF-8) (disconnected from bus)","_ts":1548248814652,"_app":"secure","_ip":"10.129.177.16","_ipremote":"169.56.30.124","__key":"logline:09a8a8abfe:secure:vsi-20180121:ld60","level":null,"logsource":"vsi-20180121","program":"polkitd","pid":3735,"message":"Unregistered Authentication Agent for unix-process:31232:12724202 (system bus name :1.124, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale ja_JP.UTF-8) (disconnected from bus)","_id":"1041230996311273480"}
...
VRAのログ監視
仮想ルーターのVRA (Vyatta Router Appliance)についてもOSがLinuxベースのため同様の手順で監視できます。
エージェントはLinux Ubuntu/Debianベースのものをインストールしてください。
echo "deb https://repo.logdna.com stable main" | sudo tee /etc/apt/sources.list.d/logdna.list
wget -O- https://repo.logdna.com/logdna.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install logdna-agent < "/dev/null" # this line needed for copy/paste
sudo logdna-agent -k 09a8a8abfe0765729c660345b4a0d513 # this is your unique Ingestion Key
sudo logdna-agent -s LOGDNA_APIHOST=api.us-south.logging.cloud.ibm.com # this is your API server host
sudo logdna-agent -s LOGDNA_LOGHOST=logs.us-south.logging.cloud.ibm.com # this is your Log server host
# /var/log is monitored/added by default (recursively), optionally add more dirs with:
# sudo logdna-agent -d /path/to/log/folders
# You can configure the agent to tag your hosts with:
# sudo logdna-agent -t mytag,myothertag
sudo update-rc.d logdna-agent defaults
sudo /etc/init.d/logdna-agent start
以下のようにリアルタイムでrsyslogのログが転送されます。
エージェント・レスでのログ監視 ※2019年3月18日追加
エージェント・レスでもrsyslogによりsyslogを転送することが可能です。
IBM CloudのサービスからLogDNAサービスのダッシュボードを起動し、"Add log sources"をクリックしてください。
Root CA Certificate を /etc/ld-root-ca.crt にダウンロードしてください。
# cd /etc
# wget https://repo.logdna.com/syslog/ld-root-ca.crt
22-logdna.confファイルを新規に/etc/rsyslog.d/22-logdna.confに作成してください(キーはIBM Cloud経由で起動したLogDNAのダッシュボードのものを利用します。)
### START LogDNA rsyslog logging directives ###
## TCP TLS only ##
$DefaultNetstreamDriverCAFile /etc/ld-root-ca.crt # trust these CAs
$ActionSendStreamDriver gtls # use gtls netstream driver
$ActionSendStreamDriverMode 1 # require TLS
$ActionSendStreamDriverAuthMode x509/name # authenticate by hostname
$ActionSendStreamDriverPermittedPeer *.us-south.logging.cloud.ibm.com
## End TCP TLS only ##
$template LogDNAFormat,"<%PRI%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [logdna@48950 key=\"********************************\"] %msg%"
# Send messages to LogDNA over TCP using the template.
*.* @@.us-south.logging.cloud.ibm.com:6514;LogDNAFormat
### END LogDNA rsyslog logging directives ###
Download this file
yumで"rsyslog-gnutls"をインストールしてください。
# yum install rsyslog-gnutls
"rsyslog"サービスをリスタートしてください。
# sudo /etc/init.d/rsyslog restart
以下のようにLogDNAダッシュボードに/var/log/配下のログが転送されます。
VMware NSX環境のSyslog転送
NSXのSyslog転送先として1台または2台のリモートSyslog サーバを設定できます。NSX Edge アプライアンスから流れるファイアウォール イベントに関連した NSX Edge のイベントとログは、Syslog サーバに送信されます。
- vSphere Web Client にログインします。
- [ネットワークとセキュリティ (Networking & Security)] をクリックし、[NSX Edge (NSX Edges)] をクリックします。
- NSX Edge をダブルクリックします。
- [管理] > [設定] タブの順にクリックします。
- [詳細] パネルで、Syslog サーバの横の [変更] をクリックします。
- 両方のリモート Syslog サーバの IP アドレスを入力し、プロトコルを選択します。
- [OK] をクリックして設定を保存します。
※LogDNAサーバは、"syslog-a.us-south.logging.cloud.ibm.com:31372"ですがここではパブリックIPアドレスを直接入力しています。
LogDNAダッシュボードにログが転送されます。
参考リンク
公式ガイド
https://docs.logdna.com/docs
以上、簡単ですがLogDNAによるIBM Cloud IaaSの監視についての紹介でした。