有料VPNを試してみる その4(2021/12/08) [Linux]
■Linux編
LinuxはZorin16(Ubuntu、Debian系)で試してみました。
ってまあ、基本的に以下に書いてあることをそのまま実行するだけなんですけどね。
https://support.nordvpn.com/Connectivity/Linux/1325531132/Installing-and-using-NordVPN-on-Debian-Ubuntu-Raspberry-Pi-Elementary-OS-and-Linux-Mint.htm
1.ターミナルで以下を実効(sudoのパスワードを聞かれます)
sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
そのままだと設定ガイドにある通り、Permissionの問題が出ます。
2.以下を実行して再起動
sudo usermod -aG nordvpn $USER
以上
なお、接続はCLIになるのでちょっと敷居は高くなります。Zorin16のアプリ一覧にNordVPNのフロントエンドがありますが、バージョンの不一致なのか私のところでは使えなかったのでインストールしてもゴミになります。
nordvpn loginでクレデンシャル情報を設定し、nordvpn connect/disconnectで接続のON/OFFです。ただこのhelpは不完全なので、きちんとWebマニュアル or manで残りのオプションも確認しておいた方が良いです。
接続先は以下から確認することができます。
https://nordvpn.com/ja/servers/tools/
LinuxはZorin16(Ubuntu、Debian系)で試してみました。
ってまあ、基本的に以下に書いてあることをそのまま実行するだけなんですけどね。
https://support.nordvpn.com/Connectivity/Linux/1325531132/Installing-and-using-NordVPN-on-Debian-Ubuntu-Raspberry-Pi-Elementary-OS-and-Linux-Mint.htm
1.ターミナルで以下を実効(sudoのパスワードを聞かれます)
sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
そのままだと設定ガイドにある通り、Permissionの問題が出ます。
yamaha@Zorin16:~$ nordvpn status Whoops! Permission denied accessing /run/nordvpn/nordvpnd.sock Run 'usermod -aG nordvpn $USER' to fix this issue and log out of OS afterwards for this to take an effect.
2.以下を実行して再起動
sudo usermod -aG nordvpn $USER
以上
なお、接続はCLIになるのでちょっと敷居は高くなります。Zorin16のアプリ一覧にNordVPNのフロントエンドがありますが、バージョンの不一致なのか私のところでは使えなかったのでインストールしてもゴミになります。
yamaha@Zorin16:~$ nordvpn Welcome to NordVPN Linux client app! Version 3.12.1 Website: https://nordvpn.com Usage: nordvpn [global options] command [command options] [arguments...] Commands: account Shows account information cities Shows a list of cities where servers are available connect, c Connects you to VPN countries Shows a list of countries where servers are available disconnect, d Disconnects you from VPN groups Shows a list of available server groups login Logs you in logout Logs you out rate Rate your last connection quality (1-5) register Registers a new user account set, s Sets a configuration option settings Shows current settings status Shows connection status version Shows the app version whitelist Adds or removes an option from a whitelist help, h Shows a list of commands or help for one command Global options: --help, -h show help (default: false) --version, -v print the version (default: false) For more detailed information, please check manual page. Our customer support works 24/7 so if you have any questions or issues, drop us a line at https://support.nordvpn.com/
nordvpn loginでクレデンシャル情報を設定し、nordvpn connect/disconnectで接続のON/OFFです。ただこのhelpは不完全なので、きちんとWebマニュアル or manで残りのオプションも確認しておいた方が良いです。
接続先は以下から確認することができます。
https://nordvpn.com/ja/servers/tools/
rngdプロセスが暴走している (2021/07/06) [Linux]
CentOS 8でSambaのレスポンスが重く感じるときがあり、中に入ってみたら愕然。rngdプロセスが暴走していました。rngdは乱数発生に関するコンポーネントの模様です。
うちが仮想環境なので、それに起因する不具合かなと思ったのですが、仮想でないネイティブな環境でも事例報告がある模様。
https://access.redhat.com/solutions/3266261
https://bugzilla.redhat.com/show_bug.cgi?id=1739730
サポートサイトでサービス殺しておけば?と言われているので、とりあえず殺しておくことにします。「systemctl disable --now rngd」 CPU使用率は落ち着きました。
top - 01:58:09 up 21 days, 7:00, 1 user, load average: 1.00, 1.00, 1.00 Tasks: 135 total, 2 running, 133 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.2 us, 17.6 sy, 0.0 ni, 74.8 id, 0.0 wa, 0.2 hi, 0.1 si, 0.1 st MiB Mem : 1796.1 total, 92.0 free, 172.4 used, 1531.6 buff/cache MiB Swap: 2084.0 total, 2000.0 free, 84.0 used. 1451.2 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 729 rngd 20 0 381340 2436 2044 R 99.0 0.1 30399:20 rngd 1 root 20 0 252128 8484 5872 S 0.0 0.5 0:11.64 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.56 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 10 root 20 0 0 0 0 S 0.0 0.0 0:03.61 ksoftirqd/0 11 root 20 0 0 0 0 I 0.0 0.0 2:05.04 rcu_sched 12 root rt 0 0 0 0 S 0.0 0.0 0:00.29 migration/0 13 root rt 0 0 0 0 S 0.0 0.0 0:01.13 watchdog/0
うちが仮想環境なので、それに起因する不具合かなと思ったのですが、仮想でないネイティブな環境でも事例報告がある模様。
https://access.redhat.com/solutions/3266261
https://bugzilla.redhat.com/show_bug.cgi?id=1739730
サポートサイトでサービス殺しておけば?と言われているので、とりあえず殺しておくことにします。「systemctl disable --now rngd」 CPU使用率は落ち着きました。
rsyncで同期を取る (2021/03/25、CentOS 8.3) [Linux]
Citrix Hypervisor上のFreeBSD上でSambaサーバを立てていましたが、明らかにCitrix Hypervisor上のLinuxの方が速度が出るので、使い勝手を考えLinuxをメインのSambaサーバにすることにしました。(裏切り者とか言うなかれ)
ただ、バックアップ等を含めた冗長化の仕組みは欲しいもので、Linuxは特にこのあたりが心配です。ファイルシステムが高速化重視のため、クラッシュした際は完膚なきまでにズタズタになると聞いたことがあります。Linuxでもカーネルが提供するRAID1が使えるようですが、論理的に破壊されたディスクをミラーリングしても意味がないので、もうちょっと良い仕組みが必要です。
そこでは私は考えました。
仮想環境を生かし、FreeBSDとLinuxでrsyncすれば良いではないか。Sambaで公開しているディレクトリをrsyncで同期するようにし、FreeBSDでもSambaを立ち上げ、LinuxでもSambaを立ち上げるのです。当然、どちらの宛先でもアクセスできます。同期頻度は6時間に1回(後に12時間に1回に変更)としました。
Linuxを主、FreeBSDを従とすることで、FreeBSD側が12間毎のバックアップのようになります。
なかなかのシステム設計と言いたいところですが、いざrsyncしようとするとエラーで弾かれてしまいます。rsyncコマンド・オプションは以下を参考にしており、特に問題はありません。
https://www.atmarkit.co.jp/ait/articles/1702/02/news031.html
結果から言うとSELinuxによるアクセス制御だった訳ですが、どうにも直し方が分からない。SELinux自体を無効にする方法もありますが、何か負けたような気がして気が進みません。そして調べること半日。
「setsebool -P rsync_full_access 1」を以下のWebページで発見してうまくいくようになりました。
https://www.systutorials.com/docs/linux/man/8-rsync_selinux/
パラメータを見て分かる通りFullアクセスを有効にしているので、SELinux無効化とさほど変わらないかもしれません。できる形、分かる形で、小さなところからコツコツ始めるのが第一歩だと思います。
ただ、バックアップ等を含めた冗長化の仕組みは欲しいもので、Linuxは特にこのあたりが心配です。ファイルシステムが高速化重視のため、クラッシュした際は完膚なきまでにズタズタになると聞いたことがあります。Linuxでもカーネルが提供するRAID1が使えるようですが、論理的に破壊されたディスクをミラーリングしても意味がないので、もうちょっと良い仕組みが必要です。
そこでは私は考えました。
仮想環境を生かし、FreeBSDとLinuxでrsyncすれば良いではないか。Sambaで公開しているディレクトリをrsyncで同期するようにし、FreeBSDでもSambaを立ち上げ、LinuxでもSambaを立ち上げるのです。当然、どちらの宛先でもアクセスできます。同期頻度は6時間に1回(後に12時間に1回に変更)としました。
Linuxを主、FreeBSDを従とすることで、FreeBSD側が12間毎のバックアップのようになります。
なかなかのシステム設計と言いたいところですが、いざrsyncしようとするとエラーで弾かれてしまいます。rsyncコマンド・オプションは以下を参考にしており、特に問題はありません。
https://www.atmarkit.co.jp/ait/articles/1702/02/news031.html
結果から言うとSELinuxによるアクセス制御だった訳ですが、どうにも直し方が分からない。SELinux自体を無効にする方法もありますが、何か負けたような気がして気が進みません。そして調べること半日。
「setsebool -P rsync_full_access 1」を以下のWebページで発見してうまくいくようになりました。
https://www.systutorials.com/docs/linux/man/8-rsync_selinux/
パラメータを見て分かる通りFullアクセスを有効にしているので、SELinux無効化とさほど変わらないかもしれません。できる形、分かる形で、小さなところからコツコツ始めるのが第一歩だと思います。
CentOS 8でSambaサーバを立てる(2021/02/20) [Linux]
FreeBSDのSambaサーバが調子悪くなってしまいました。以前は60MB/s程度は確保できていたのですが、ある日突然、20MB/s程度しか速度が出なくなってしまいました。思い当たる節はありません。
思い切ってFreeBSD VM インスタンスを消して新規に再作成してみましたが、結果は変わらず。Citrix Hypervisorのベースシステム側の問題のようです。かれこれ3~4年ぐらい使っているはずですが、こんな事象は初めてです。(FreeBSDはSambaファイルサーバとして使っていたので、データの待避が大変でした)
Citrix Hypervisorはそのままにiperf3で速度測定をしてみたところ、FreeBSDで200Mbps、Cent OS 8で900Mbps。これはおかしい。大変でしたがCitrix Hypervisorの再インストールをすれば元に戻ったので、原因は不明です。再インストール後は、FreeBSDで800~900Mbps程度出るようになりました。
ただ、せっかくなのでCentOS8でもSambaサーバを立ててみようかと思いましたが、SELinux関連ではまったのでメモ。Sambaの設定ファイルはFreeBSDから持ってきたので、基本的に動作実績のある完成形です。以下はパターン化したお決まりの部分なので、特に問題なく完了。
・firewall-cmd --add-service=samba --permanent
・firewall-cmd --reload
・systemctl enable smb
・pdbedit -a xxxxx
ただ、Windowsから接続しようとするとSambaへの接続は確立するものの具体的なディレクトリアクセスをしようとすると、「権限がない」といった文言で弾かれます。設定は完璧なはずなのに…
試しにsmbclientを導入して、
smbclient //192.168.0.100/public -U samba
といった形で接続し、lsを行うと「NT_STATUS_ACCESS_DENIED」とのこと。やはり権限関係で弾かれているようです。ざっとWebを確認すると、SELinux関連で弾かれているようですね。このあたりはFreeBSDと概念が異なるので、ありがた迷惑といった感じでもあります。
http://blog2.zunbe.com/?p=1821
https://qiita.com/azuritev3coa3/items/4269228b4241c07ea2be
以下を指定して問題なく接続できるようになりました。
・setsebool -P samba_export_all_rw on
なおSambaの感想としては、明らかにFreeBSDよりも安定していて早いですね。まあ不安定なCitrix Hypervisor上で動かしているというのもありますが。
思い切ってFreeBSD VM インスタンスを消して新規に再作成してみましたが、結果は変わらず。Citrix Hypervisorのベースシステム側の問題のようです。かれこれ3~4年ぐらい使っているはずですが、こんな事象は初めてです。(FreeBSDはSambaファイルサーバとして使っていたので、データの待避が大変でした)
Citrix Hypervisorはそのままにiperf3で速度測定をしてみたところ、FreeBSDで200Mbps、Cent OS 8で900Mbps。これはおかしい。大変でしたがCitrix Hypervisorの再インストールをすれば元に戻ったので、原因は不明です。再インストール後は、FreeBSDで800~900Mbps程度出るようになりました。
ただ、せっかくなのでCentOS8でもSambaサーバを立ててみようかと思いましたが、SELinux関連ではまったのでメモ。Sambaの設定ファイルはFreeBSDから持ってきたので、基本的に動作実績のある完成形です。以下はパターン化したお決まりの部分なので、特に問題なく完了。
・firewall-cmd --add-service=samba --permanent
・firewall-cmd --reload
・systemctl enable smb
・pdbedit -a xxxxx
ただ、Windowsから接続しようとするとSambaへの接続は確立するものの具体的なディレクトリアクセスをしようとすると、「権限がない」といった文言で弾かれます。設定は完璧なはずなのに…
試しにsmbclientを導入して、
smbclient //192.168.0.100/public -U samba
といった形で接続し、lsを行うと「NT_STATUS_ACCESS_DENIED」とのこと。やはり権限関係で弾かれているようです。ざっとWebを確認すると、SELinux関連で弾かれているようですね。このあたりはFreeBSDと概念が異なるので、ありがた迷惑といった感じでもあります。
http://blog2.zunbe.com/?p=1821
https://qiita.com/azuritev3coa3/items/4269228b4241c07ea2be
以下を指定して問題なく接続できるようになりました。
・setsebool -P samba_export_all_rw on
なおSambaの感想としては、明らかにFreeBSDよりも安定していて早いですね。まあ不安定なCitrix Hypervisor上で動かしているというのもありますが。
Zabbix 5.2 インストール その2(2021/02/16) [Linux]
アプライアンス版のZabbixはCentOSをベースにしているようなので、環境の整備を行ってあげます。
■静的IPアドレスの設定
■yumでインストールしておくと便利なもの
・tar.x86_64
・mlocate.x86_64
・iperf3.x86_64
■タイムゾーンの設定
・timedatectl set-timezone Asia/Tokyo
・timedatectl status
■Citrix VM Toolsのインストール
・CitrixHypervisor-LinuxGuestTools-7.20.0-1.tar.gzをゲットして展開
・rpm -ivh xe-guest-utilities-7.20.0-1.x86_64.rpm
・rpm -ivh xe-guest-utilities-xenstore-7.20.0-1.x86_64.rpm
・service xe-linux-distribution start
中身は単純なLinuxと思って良いようです。
■静的IPアドレスの設定
[root@appliance etc]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO=none NM_CONTROLLED="no" ONBOOT="yes" TYPE=Ethernet DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPADDR=192.168.0.100 NETMASK=255.255.255.0 GATEWAY=192.168.0.254 IPV6INIT=no NAME="eth0"
■yumでインストールしておくと便利なもの
・tar.x86_64
・mlocate.x86_64
・iperf3.x86_64
■タイムゾーンの設定
・timedatectl set-timezone Asia/Tokyo
・timedatectl status
■Citrix VM Toolsのインストール
・CitrixHypervisor-LinuxGuestTools-7.20.0-1.tar.gzをゲットして展開
・rpm -ivh xe-guest-utilities-7.20.0-1.x86_64.rpm
・rpm -ivh xe-guest-utilities-xenstore-7.20.0-1.x86_64.rpm
・service xe-linux-distribution start
中身は単純なLinuxと思って良いようです。
タグ:ZABBIX
Zabbix 5.2 インストール その1(2021/02/14) [Linux]
Citrix Hypervisorのリソースが余っているので、Zabbixをインストールしてみることにしました。過去、Zabbixは何度かインストールしたことがあるのですが、MySQLが必要だったりとメンテナンスが大変だったり、メインメモリをSambaと奪い合ったりして管理が面倒だったりします。
当時導入していたのは4.4系だったと思いますが、最新バージョンを確認すると5.2になっている上、当時気付かなかったのですが、アプライアンス用のISOイメージがあるんですね。ぜひこちらをインストールさせてもらいましょう。
ISOからインストールするにあたり、必要なメモリやディスク容量が分かりません。マニュアルを見ても特に記載がないようなので、Open virtualization format (.ovf)を仮インポートし、メモリ4GB、ディスク10GBのひな形となっていたようなのでそちら参考にVMを作成しました。
インストールは完全全自動で特に問題なく終わりました。ただ、Y/Nもなく勝手にフォーマット、インストールまで終わってしまうため、間違えて大事なシステムでCDブートさせると大変なことになりそうです。
初期設定はDHCPによるIPアドレス取得になっているため、ベースとなっているCentOSの作法に従い/etc/sysconfig/network-scripts/ifcfg-eth0を修正して固定IPアドレスを割り当てました。
初期パスワードはマニュアルに記載のある通り、CLIではroot/zabbix、Zabbix WebインタフェースではAdmin/zabbixとなります。
ただ、見ての通り日本語が選べないんですよね。
こちらはyumでは日本語化キットが配布されているため、以下をインストールすることでJPが選べるようになりました。
当時導入していたのは4.4系だったと思いますが、最新バージョンを確認すると5.2になっている上、当時気付かなかったのですが、アプライアンス用のISOイメージがあるんですね。ぜひこちらをインストールさせてもらいましょう。
ISOからインストールするにあたり、必要なメモリやディスク容量が分かりません。マニュアルを見ても特に記載がないようなので、Open virtualization format (.ovf)を仮インポートし、メモリ4GB、ディスク10GBのひな形となっていたようなのでそちら参考にVMを作成しました。
インストールは完全全自動で特に問題なく終わりました。ただ、Y/Nもなく勝手にフォーマット、インストールまで終わってしまうため、間違えて大事なシステムでCDブートさせると大変なことになりそうです。
初期設定はDHCPによるIPアドレス取得になっているため、ベースとなっているCentOSの作法に従い/etc/sysconfig/network-scripts/ifcfg-eth0を修正して固定IPアドレスを割り当てました。
初期パスワードはマニュアルに記載のある通り、CLIではroot/zabbix、Zabbix WebインタフェースではAdmin/zabbixとなります。
ただ、見ての通り日本語が選べないんですよね。
こちらはyumでは日本語化キットが配布されているため、以下をインストールすることでJPが選べるようになりました。
[root@appliance ~]# yum search japanese Last metadata expiration check: 0:56:56 ago on Sun 14 Feb 2021 02:51:07 AM UTC. ======================================================= Name & Summary Matched: japanese ======================================================= zabbix-web-japanese.noarch : Japanese font settings for Zabbix frontend
タグ:ZABBIX
Elasticsearchの仕切り直し導入 その8(CentOS 7.5、2019/02/02) [Linux]
Logstashの設定を作り込むのはトライアルアンドエラーの要素が強く、何度も修正を余儀なくされることでしょう。毎回サービスを再起動させるのは面倒ですし、デバッグ出力も見たいので、私は下記のようにコマンドラインで、起動させています。
ちょっと待っているとずらずらと表示され、最終的に下記のような行で安定(=起動したまま)すれば準備OKです。
root@centos logstash]# /usr/share/logstash/bin/logstash -f /etc/logstash/mylog.conf
ちょっと待っているとずらずらと表示され、最終的に下記のような行で安定(=起動したまま)すれば準備OKです。
[INFO ] 2019-02-02 17:14:56.914 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600}
Elasticsearchの仕切り直し導入 その7(CentOS 7.5、2019/01/27) [Linux]
Elasticsearchの使い方がなんとなく使い方が分かってきたので、CISCOのsyslogを取り込んでみます。Logstashは様々なInputに対応しており、下記にpluginの一覧とその説明があります。
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
今回はsyslogプラグインを使うことにします。syslogプラグインを使うと、hostやfacilityなどを自動的にデコードしてくれます。データ取り込み時に@timestampが設定されますが、CISCOのsyslogメッセージ内にもタイムスタンプが埋め込まれているので、分かりやすいように後者も抽出してみることにします。
なお、CISCO側の設定は下記のようになっています。Logstash側での処理を考えると、既存のsyslogサービスとポート番号がバッティングしないよう、このようにしています。
CISCOのsyslogメッセージ内のタイムスタンプ(後述のmessageがsyslogの生データになります)を切り出すにあたり、下記パターンを独自に定義しています。実際のところ、c_monthなどは後で使わないので名前を付ける必要はないのですが、デバッグも兼ねてこのようにしています。
なお、Logstashに標準で定義されている正規表現パターンは下記を参照して下さい。
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
今回作ったコンフィグは下記の通りです。
これで実際にsyslogを送出すると、下記のような出力が得られます。
出力を簡単に説明します。
c_min:syslog生データ(message)から、独自パターンでマッチさせた「分」データ
c_month:syslog生データ(message)から、独自パターンでマッチさせた「月」データ
_grokparsefailure_sysloginput:syslogメッセージのデコードに失敗している場合に出力されるものと思いますが、どうしようもないので放置
c_mnum:syslog生データ(message)から、独自パターンでマッチさせた「日」データ
cisco_syslog_message:syslog生データ(message)から、ゴミを除いたsyslogメッセージの実体
type:処理ルーチンの中で私が加えた値
tmp_timestamp:syslog生データ(message)から、独自パターンでマッチさせたタイムスタンプ部分を格納
@c_timestamp:syslog生データ(message)から、独自パターンでマッチさせたタイムスタンプ部分を時刻型に変換したもの
@timestamp:データ受信時に刻印したタイムスタンプ(自動生成)
c_year:syslog生データ(message)から、独自パターンでマッチさせた「年」データ
message:syslog生データそのもの(自動生成)
host:syslog送出元(自動生成)
c_hour:syslog生データ(message)から、独自パターンでマッチさせた「時」データ
c_second:syslog生データ(message)から、独自パターンでマッチさせた「秒」データ
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
今回はsyslogプラグインを使うことにします。syslogプラグインを使うと、hostやfacilityなどを自動的にデコードしてくれます。データ取り込み時に@timestampが設定されますが、CISCOのsyslogメッセージ内にもタイムスタンプが埋め込まれているので、分かりやすいように後者も抽出してみることにします。
なお、CISCO側の設定は下記のようになっています。Logstash側での処理を考えると、既存のsyslogサービスとポート番号がバッティングしないよう、このようにしています。
Router-C841MJ#show running-config service timestamps log datetime msec localtime show-timezone year clock timezone JST 9 0 logging facility local0 logging host 192.168.100.10 transport udp port 1514
CISCOのsyslogメッセージ内のタイムスタンプ(後述のmessageがsyslogの生データになります)を切り出すにあたり、下記パターンを独自に定義しています。実際のところ、c_monthなどは後で使わないので名前を付ける必要はないのですが、デバッグも兼ねてこのようにしています。
[root@centos ]# cat /etc/logstash/patterns/pattern-cisco CISCOTIME %{MONTH:c_month} %{MONTHDAY:c_mnum} %{YEAR:c_year} %{HOUR:c_hour}:%{MINUTE:c_min}:%{SECOND:c_second}
なお、Logstashに標準で定義されている正規表現パターンは下記を参照して下さい。
https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
今回作ったコンフィグは下記の通りです。
[root@centos ]# cat cisco-syslog.conf input { # cisco syslog syslog { port => 1514 type => "syslog-cisco-841mj" } # debug stdin {} } filter { grok { patterns_dir => "/etc/logstash/patterns/" match => [ "message", "%{CISCOTIME:tmp_timestamp} %{WORD}: %{GREEDYDATA:cisco_syslog_message}" ] } date { match => [ "tmp_timestamp", "MMM dd yyyy HH:mm:ss.SSS" ] locale => "en" timezone => "Asia/Tokyo" target => "@c_timestamp" } } output { if "_grokparsefailure" in [tags] { file { path => "/var/log/logstash/fail.log" } } stdout { codec => rubydebug } }
これで実際にsyslogを送出すると、下記のような出力が得られます。
{ "c_min" => "05", "c_month" => "Jan", "tags" => [ [0] "_grokparsefailure_sysloginput" ], "severity_label" => "Emergency", "c_mnum" => "27", "cisco_syslog_message" => "%SYS-5-CONFIG_I: Configured from console by test on vty0 (192.168.100.11)", "facility" => 0, "priority" => 0, "type" => "syslog-cisco-841mj", "tmp_timestamp" => "Jan 27 2019 20:05:45.316", "@c_timestamp" => 2019-01-27T11:05:45.316Z, "severity" => 0, "@timestamp" => 2019-01-27T11:05:46.379Z, "facility_label" => "kernel", "c_year" => "2019", "message" => "<133>12919: Jan 27 2019 20:05:45.316 JST: %SYS-5-CONFIG_I: Configured from console by test on vty0 (192.168.100.11)", "host" => "192.168.100.11", "c_hour" => "20", "c_second" => "45.316", "@version" => "1" }
出力を簡単に説明します。
c_min:syslog生データ(message)から、独自パターンでマッチさせた「分」データ
c_month:syslog生データ(message)から、独自パターンでマッチさせた「月」データ
_grokparsefailure_sysloginput:syslogメッセージのデコードに失敗している場合に出力されるものと思いますが、どうしようもないので放置
c_mnum:syslog生データ(message)から、独自パターンでマッチさせた「日」データ
cisco_syslog_message:syslog生データ(message)から、ゴミを除いたsyslogメッセージの実体
type:処理ルーチンの中で私が加えた値
tmp_timestamp:syslog生データ(message)から、独自パターンでマッチさせたタイムスタンプ部分を格納
@c_timestamp:syslog生データ(message)から、独自パターンでマッチさせたタイムスタンプ部分を時刻型に変換したもの
@timestamp:データ受信時に刻印したタイムスタンプ(自動生成)
c_year:syslog生データ(message)から、独自パターンでマッチさせた「年」データ
message:syslog生データそのもの(自動生成)
host:syslog送出元(自動生成)
c_hour:syslog生データ(message)から、独自パターンでマッチさせた「時」データ
c_second:syslog生データ(message)から、独自パターンでマッチさせた「秒」データ
Elasticsearchの仕切り直し導入 その6(CentOS 7.5、2019/01/24) [Linux]
Elasticsearchですが、なんとなく使い方が分かってきました。私なりの解釈で、ざっとおさらいしてみます。
1.Elasticsearchってどういうソリューション?
大量のテキストデータを扱うことを得意とするデータベースです。蓄積したデータの、高速検索や可視化を行うことができます。
2.Elasticsearchの使い方が、うまくイメージができない
ネットワークエンジニアがイメージしやすい使い方としては、syslogサーバやsnmp trapサーバでしょうか。膨大なログを高速検索できるようになります。
ただし、単純なsyslogサーバやsnmp trapサーバといった使い方だと、高速検索ができるだけのただのサーバです。本来の価値・能力を十分に発揮できていないと思います。
3.ElasticsearchとSplunkの違いは?
基本的に似たもの同士だと思います。CPUで言えば、IntelとAMDのような関係ですね。私の印象では、設計思想などの細かなところが違うといった感じです。(後述します)
4.Elasticsearchの上手な使い方は?
可視化を行うためには、集計することで価値や意味を見いだせるようなデータ(≒統計データ)を収集することです。そのためには、syslogデータをただのテキストデータとして収集するのではなく、送信元や時間、メッセージの中身(プロトコルやインタフェース、内容など)をきちんと分解し、集計できる状態で蓄積する必要があります。
5.テキストデータの分解ってどうやるの?
基本的に正規表現を駆使します。なかなかうまくいかないので、基本的にトライアル・アンド・エラー(試行錯誤)の繰り返しになるかと思います。
ただSplunkに関しては、Apacheログやxxxxログ向けといった各種ひな形プラグインが用意されているように見え、有償もしれませんが、定型ログを対象するなら立ち上げは早そうです。
6.素人でも使える?
エンタープライズ用途で使うなら、専門のSIerさんに任せた方が無難かと思います。
7.ElasticsearchとSplunkの違いは?(詳細編1)
お金を払うと使える機能が増え、正式サポートを受けられるところは同様です。ただ、Splunkはログの転送量(≒従量制)によっても追加料金が発生するようです。
8.ElasticsearchとSplunkの違いは?(詳細編2)
Elasticsearchは(Splunkに比べて)情報が少なく、マニア・ハッカー向けといった感じ。一方、Splunkはやや成熟している感じで、国内に多くのエンジニア(SIer、有識者)がいます。
まぁ、英語になりますがElasticsearchには公式のちゃんとしたマニュアルがありますけどね。
9.ElasticsearchとSplunkの違いは?(詳細編3)
Elasticsearchは、"Elasticsearch"、"Kibana"、"Logstash"などと主要コンポーネントが分かれていて、サーバの分散化は容易かもしれませんが、その分、管理は面倒なのかもしれません。
Splunkはインストールしたことがありませんが、コンポーネントが分かれているような話は聞かないので、パケージとしてまとまっているのではないでしょうか。
10.ElasticsearchとSplunkの違いは?(詳細編4)
Elasticsearchはデータを蓄積する前にテキストデータの分解を行います。うまく事前加工すれば、蓄積データ量の削減につながると思います。
Splunkは、紹介ページを見る限り、データ蓄積後にGUI上でデータ分解ができるように見えました。インタフェースは使いやすそうですが、ストレージに無加工のデータが蓄積するので、転送容量(つまりは料金体系)は多くなりそうです。
1.Elasticsearchってどういうソリューション?
大量のテキストデータを扱うことを得意とするデータベースです。蓄積したデータの、高速検索や可視化を行うことができます。
2.Elasticsearchの使い方が、うまくイメージができない
ネットワークエンジニアがイメージしやすい使い方としては、syslogサーバやsnmp trapサーバでしょうか。膨大なログを高速検索できるようになります。
ただし、単純なsyslogサーバやsnmp trapサーバといった使い方だと、高速検索ができるだけのただのサーバです。本来の価値・能力を十分に発揮できていないと思います。
3.ElasticsearchとSplunkの違いは?
基本的に似たもの同士だと思います。CPUで言えば、IntelとAMDのような関係ですね。私の印象では、設計思想などの細かなところが違うといった感じです。(後述します)
4.Elasticsearchの上手な使い方は?
可視化を行うためには、集計することで価値や意味を見いだせるようなデータ(≒統計データ)を収集することです。そのためには、syslogデータをただのテキストデータとして収集するのではなく、送信元や時間、メッセージの中身(プロトコルやインタフェース、内容など)をきちんと分解し、集計できる状態で蓄積する必要があります。
5.テキストデータの分解ってどうやるの?
基本的に正規表現を駆使します。なかなかうまくいかないので、基本的にトライアル・アンド・エラー(試行錯誤)の繰り返しになるかと思います。
ただSplunkに関しては、Apacheログやxxxxログ向けといった各種ひな形プラグインが用意されているように見え、有償もしれませんが、定型ログを対象するなら立ち上げは早そうです。
6.素人でも使える?
エンタープライズ用途で使うなら、専門のSIerさんに任せた方が無難かと思います。
7.ElasticsearchとSplunkの違いは?(詳細編1)
お金を払うと使える機能が増え、正式サポートを受けられるところは同様です。ただ、Splunkはログの転送量(≒従量制)によっても追加料金が発生するようです。
8.ElasticsearchとSplunkの違いは?(詳細編2)
Elasticsearchは(Splunkに比べて)情報が少なく、マニア・ハッカー向けといった感じ。一方、Splunkはやや成熟している感じで、国内に多くのエンジニア(SIer、有識者)がいます。
まぁ、英語になりますがElasticsearchには公式のちゃんとしたマニュアルがありますけどね。
9.ElasticsearchとSplunkの違いは?(詳細編3)
Elasticsearchは、"Elasticsearch"、"Kibana"、"Logstash"などと主要コンポーネントが分かれていて、サーバの分散化は容易かもしれませんが、その分、管理は面倒なのかもしれません。
Splunkはインストールしたことがありませんが、コンポーネントが分かれているような話は聞かないので、パケージとしてまとまっているのではないでしょうか。
10.ElasticsearchとSplunkの違いは?(詳細編4)
Elasticsearchはデータを蓄積する前にテキストデータの分解を行います。うまく事前加工すれば、蓄積データ量の削減につながると思います。
Splunkは、紹介ページを見る限り、データ蓄積後にGUI上でデータ分解ができるように見えました。インタフェースは使いやすそうですが、ストレージに無加工のデータが蓄積するので、転送容量(つまりは料金体系)は多くなりそうです。
Elasticsearchの仕切り直し導入 その5.5(CentOS 7.5、2019/01/16) [Linux]
Elasticsearchについても少し時間が空いてしまいました。エラーの対策がうまくいかなかったり、解決できない課題があったりと、少し充電期間を置いていた訳ですが、久々にいじってみたら(バージョンアップされたから?)、いろいろとうまくいくようになっていたので、こちらも近いうちにブログに起こせたらなと思います。