MareoのIT技術ブログ

インフラエンジニアの技術ブログです

LogstashでMultiplePipelineに失敗した話

MultiplePipelineを実施したくて調べて来た方はごめんなさい、解決していないです。

結論

経緯としては、Logstashで処理するデータ送信元や格納先インデックスが増えて来たため、MultiplePipelinesにしてパイプライン定義ファイルもパイプライン単位で独立させ、パイプラインの独立性と、パイプライン定義ファイルの可読性を上げようと思いました。

結果、MultiplePipelineではどうにもうまくデータが入らなかったため、パイプラインの分割は諦め、mainパイプラインのみとし、パイプライン定義ファイルの可読性向上のみ実施しました。

 

以下作成中。後で清書します

環境や設計

  • Logstash 7.6らへん
  • 対象データはFilebeatのみ
  • 格納先インデックスは、「システム名-ログ名-年月」で設定
  • IndexTemplateやKibanaでは「システム名-*」「システム名-ログ名-*」でインデックスパターンを設定

変更前の設定値

パイプライン定義ファイル「input-filebeat.conf」

input {
  beats {
    port => 5044
  }
}

filter {

  ※全てのログの分m必要なフィルターを定義(3パターンくらいしかログがなく、基本grokフィルターでの処理のみなので、特に条件分岐なし)

}

output{

  if システム==A

    if ログ名==A {

        ※インデックス「filebeat-システム名-ログ名-年月」に格納

    }

  (中略)

}

やったこと

設計

パイプラインを以下のように流れるように変更

  1. パイプライン「input-filebeat」でinputにFilebeatのデータ取得を行い、outputで個別のパイプライン「filter-システム名-ログ名」に送信する
  2. 個別の「input-filebeat」で、ログ毎に必要なFilterを実行し、outputで個別のインデックス「filebeat-システム名-ログ名-年月」に格納する

手順

/etc/logstash/logstash.yml

以下のようにpath.configのコメントアウトを実施します。これを実施しないとpipelines.ymlが読み込まれません。

# path.config: /etc/logstash/conf.d/*.conf

/etc/logstash/pipelines.yml

- pipeline.id: input-filebeat
  path.config: "/etc/logstash/conf.d/input-filebeat.conf"
- pipeline.id: filter-systemA-LogA
  path.config: "/etc/logstash/conf.d/filter-systemA-LogA.conf"
  queue.type: persisted

パイプライン定義ファイル「input-filebeat.conf」

input {
  beats {
    port => 5044
  }
}

output{

  if システム==A

    if ログ名==A {

      pipelines { send_to => "filter-systemA-LogA" }

    }

  (中略)

}

パイプライン定義ファイル「filter-systemA-LogA.conf」

input {
  pipeline { address => "filter-systemA-LogA" }
}

filter {

  ※ログ毎に必要なフィルターを定義

}

output {

  ※インデックス「filebeat-システム名-ログ名-年月」に格納

}

参考

www.elastic.co

qiita.com

想定した結果

設計通りに動く

設計

パイプラインを以下のように流れるように変更

  1. パイプライン「input-filebeat」でinputにFilebeatのデータ取得を行い、outputで個別のパイプライン「filter-システム名-ログ名」に送信する
  2. 個別の「input-filebeat」で、ログ毎に必要なFilterを実行し、outputで個別のインデックス「filebeat-システム名-ログ名-年月」に格納する

実際の結果

インデックスにデータが格納されない状態になりました。

※後日、具体的なエラーメッセージ貼り付けます

代わりにやったこと

logstash.ymlやpipelines.ymlはデフォルト設定に戻し、パイプライン定義ファイルの可読性向上や、誤ったフィルターが適用されないよう、ログの出力形式毎に条件分岐を定義

filterにもoutputにも同じ条件分岐を載せるので書きっぷりは冗長になりましたが、今後ログの種類や量が増える予定なので、Filter部分の可読性を優先してこういう感じにしました。

パイプライン定義ファイル「input-filebeat.conf」

input {
  beats {
    port => 5044
  }
}

output{

  if システム==A

    if ログ名==A {

      pipelines { send_to => "filter-systemA-LogA" }

    }

  (中略)

}

パイプライン定義ファイル「filter-systemA-LogA.conf」

filter {

  if システム==A

    if ログ名==A {

      ※ログ毎に必要なフィルターを定義

    }

}

後書き

パイプラインが一つだけなのは、今後支障が出そうなので、おいおいMultiplePipelinesは調べないとと思ってます

 

「Apache Cassandra – クイックスタート」でCassandraクラスタ構築やってみた

はじめに

会社でNoSQL製品の比較検討をすることがあり、私はCassandraの調査担当になりました。

会社のオンプレミス環境に検証サーバは立ててますが、自分でめちゃくちゃにいじれる環境が欲しく、かつcassandra.yamlとかOSレイヤの設定も見たかったので、以下URLに従ってAWSのCloudFormationでCassandra環境構築してみました。

aws.amazon.com

やり方

前述のURLから、デプロイガイドを参照して作りました

aws-quickstart.github.io

デプロイガイドの補足と注意点です

  • CloudFormationのデプロイ開始から完了まで30分から1時間程度かかりました。使いたいタイミングの前には準備しておきましょう。
  • また、デプロイ後は最低7台のEC2が起動します。結構費用がかかるので、すぐに使わない場合はEC2の停止もしくはCloudFormationスタックの削除を忘れずに。私は一晩消すの忘れて数千円かかってしまいました。。。
  • デプロイガイドの「Launch the Quick Start」にCloudFormationテンプレートのリンクがありますが、「新規VPCにデプロイ」と「既存VPCにデプロイ」のリンク先URLが「逆」になっています。(2022/08時点)
  • CloudFormationテンプレートのリンクから辿ると強制的にオハイオリージョンになるので、特に新規VPCにデプロイする場合は使用するリージョンに修正するのを忘れないようにしましょう。これはクイックスタート全般で共通ですかね。
  • 構築後、キーペアの秘密鍵をDevOps instanceにSSHで送信しましょう。DevOps instanceからCasasndraノードへのログインのコマンドに唐突にキーファイルが出て来ますが、DevOps instanceには秘密鍵おいてません。

感想

AWSが配布しているCloudFormationテンプレートで検証環境構築できるのは以前から知っていましたが、結構簡単に環境構築できて感心しました。

このクイックスタートの環境のOSや構成はCassandra用に対してチューニングされているので、オンプレで構築するにあたりかなり参考になると思います。

反面、費用と時間はちょっとかかるので、アプリ開発者の方がちょっと触ってみたい、という方はAmazonKeyspaceの利用をお勧めします。

aws.amazon.com

 

 

「AWS Certified Solutions Architect - Professional」(SAP-C01)に合格しました

 はじめに

AWS Certified Solutions Architect - Professional」(SAP-C01)に合格しました。(2022/1頃)

合格体験記を書いて行きます。

 

前提

  • インフラエンジニア。スキルはサーバ、クラウド、運用管理がメイン
  • AWSを使ったシステムは3年間の実務経験あり
  • 実務では主にAWSのカテゴリで言うとコンピュート、ストレージ、ネットワーク、セキュリティあたりを主に設計構築運用の経験あり。反面、CI/CDやデータベース、IaaCあたりはほぼ実務経験なし
  • 直近1年ほどはAWSから離れオンプレのシステムを担当
  • 保有するAWS資格はSAA、SOA

試験の概要

AWS Certified Solutions Architect - Professional」はAWS認定のうち、最も広範な知識を問われる試験です。

aws.amazon.com

 

学習期間

4ヶ月

前半2ヶ月でSAAの範囲を復習しつつ、実際に触れたことのないサービスをハンズオンで体験していました。

後半2ヶ月はSAPの試験対策本で試験対策をしました。

学習方法

SAAの復習

SAAの復習は、SAA対策の教材を深くやり直しました。

以下教材のうち、SAA受験時は飛ばしたハンズオンパートがあったのですが、実務で触っていないサービスに関しては重点的にハンズオンを実施して実感をつかみました。

www.udemy.com

SAAの学習方法についてはSAA合格の記事をご覧ください

mareopy.hatenablog.com

SAPの試験対策

以下の試験対策本を何周かしました。

補完する形で公式ドキュメントを読み込むので十分だと思います。

www.amazon.co.jp

あとは、会社の補助が出たので以下研修に参加させてもらいました。ズバリ試験対策の範囲なので、受けれる人は受けたほうが早いです。

www.trainocate.co.jp

 

試験結果

合格です。

790/1000点(合格ラインは750点)なので、ギリギリでした。

 

感想

AWSは三年間の実務経験とアソシエイト二種の知識があったとはいえ、SAPで問われるような広範囲なサービスを高度なレベルで考えるのは難しいものがありました。

AWSはプロフェッショナルレベルを「2年以上の実務経験」としていますが、どれほど濃密な2年間を過ごす想定なのでしょうか。。。

PROFESSIONAL

2 年間AWS クラウドを使用したソリューションの設計、運用、およびトラブルシューティングに関する経験

https://aws.amazon.com/jp/certification/

「ORACLE MASTER Gold DBA 2019」(1Z0-083)に合格しました

 はじめに

ORACLE MASTER Gold DBA 2019」(1Z0-083)に合格しました。(2022/3頃)

合格体験記を書いて行きます。

 

結論

冒頭から恐縮ですが、この記事での学習方法は、現時点において再現が不可能なものや、非効率な方法が多く含まれています。

これから「ORACLE MASTER Gold DBA 2019」を勉強される方は、現試験対応の黒本の発売(2022/5/27)を待ちましょう。

cosol.jp

 

本記事は、旧試験(12c)の参考書をベースに色々な方法を使って勉強した苦難の記録としてお楽しみいただければと思います。

 

試験の概要

https://education.oracle.com/ja/oracle-master-gold-dba-2019-oracle-database-administration-2019-certified-professional/trackp_DB19COCP

ORACLE MASTER Gold DBA 2019」の受験の前提条件は、「ORACLE MASTER Silver DBA 2019」を保有していることが必要です。

また、以前のOracle MASTER Gold DBAでは、認定試験合格以外にも、何らかのOracleのトレーニングを受ける必要がありましたが、今は認定試験合格のみで可能です。

この話を勤務先のベテランの方と話してたら、意外と驚かれました。「トレーニングが高額で、会社の予算的に年に何人も受けさせられなかったから、Gold保有者は珍しかった」とのこと。

 

学習期間

2ヶ月

試験勉強自体は2ヶ月でした。

ただ、プライベートの時間を全て犠牲にして勉強したのでこの期間で済みましたが、無理のないペースで試験にでない勉強するなら6ヶ月は欲しかったです。きつかった。。

あと、試験勉強ではないですが、2021年度の業務でOracleCloudInfrastructure上でDBシステムの構築を半年間実施していました。その中で、MultitenantとGridInfrastructureについて学べたので、多少試験の助けになったかと思っています。

 

学習方法

めちゃくちゃ苦労しました。

現試験(19c向け)に対応した教材が殆どないので、12cの黒本をメインに学習しました。

また、模擬試験を受けて、出てきた19cの内容について、公式の12cR2や19cリリースノートを読んで差分を学習する感じでやりました。

※たまたまOracle公式がこのタイミングでe-learningの模擬試験解説動画を出してくれていて、ほぼそれが得点源となりました。

 

勉強に使った教材

オラクルマスター教科書 Gold Oracle Database 12c

これをメインの教材として勉強しました。

ただ、これだけで2019版試験に受かるのは不可能です。というのも、おそらくこの本の内容はデータベースのバージョン「12cR1」を対象としてものと思われるからです。

2019試験では、「12cR2」「18c」「19c」と大型のリリースを3回経ており、2019版試験では「19c」時点の内容を試験の対象としています。

そのため、12c黒本で記載されている内容とはかなり試験で問われる内容が異なっています。

業務で12cR1以前のOracleDatabaseを扱っているなら触れる価値はあると思いますが、そうでないならば、冒頭で紹介した2019対応のDBA Gold黒本の出版を待ちましょう。

www.shoeisha.co.jp

 

オラクルマスター教科書 Silver Oracle Database 12c

2019版試験のGoldの試験範囲には、旧試験のSilverの「パフォーマンスチューニング」、「インストールアップグレード」が含まれているため、12c版のDBA Silver黒本を買ってきました。

「パフォーマンスチューニング」はあまり変更なかったのでそのまま利用できました。

「インストールアップグレード」は流石にバージョンが違うので、概要だけさらって、あとは19cの公式ドキュメントを読みました。

www.shoeisha.co.jp

 

ORACLE MASTER Gold DBA 2019 絶対に合格したい方向けの精選問題60問+解答

謎の人物が出しているkindleの問題集です。

誤字脱字や問題文の欠落など色々気になりますし、本物よりかなり簡易な問題が多い印象です。

ただ、現試験に対応したもので間違いないので、雰囲気を掴む&傾向把握のために序盤~中盤にやっておいて損はないかと思います

www.amazon.co.jp

 

ORACLE MASTER 取得支援プログラム ※期間限定。2022/05/31まで。

動画での資格試験準備セミナーです。

正直これに助けられました。アプリケーションコンテナとか19c新機能とか公式ドキュメントで全く理解できず、12c黒本もカバーしておらず、解説記事とかも全然ないので。。。

ちなみに、期間限定なので本記事執筆時点から1ヶ月ほどで終わってしまうのでお早めに試聴どうぞ。

このコンテンツ、AWSの模擬試験みたいに単体で購入できるようにしてくれればいいんですが、年間うん十万円のサブスクリプション買わないとこの手のコンテンツにアクセスできないんですよね。。。Oracleさん頼みます。。。

https://blogs.oracle.com/oraclemaster/post/om-lsfree-campaign

 

19cの公式ドキュメント

最終的にはこれを見ることになります。Oracleさんは初見の人に全くわかりやすく書く気はないので、不明点の補完用として使いました。もっと噛み砕いて欲しいですね。

docs.oracle.com

 

試験結果

ギリッギリ合格しました。

合格ラインが正答率65%のところ、57%でした。

正直、試験中の感触では落ちると思いました。初見の問題が半分くらいを占めていて、勉強不足を酷く痛感しました。

 

感想

DB未経験から、会社でOracleDatabase担当チームに配属されて一年目でGoldまで取り切れてめちゃめちゃえらいですね(自画自賛)。頑張った自分。

ただ、本来の目的であった「業務でOracleDatabaseを使いこなせるようになる」という目的については、知識先行となってしまい進んでいない感は否めないです。

やはり、検証環境立てて動かして確認する時間を取らないと知識が付け焼き刃なまま終わってしまうので、忘れないうちにOracleCloudInfrastructureとか触ってモリモリ血肉にして行こうと思います。

あと、ORACLE MASTERだとどうしても物理設計オンリーの知識習得になってしまうので、論理設計はまた別途本とか読んで習得しようと思います。

とりあえず一年間走り切りました👍

 

「ORACLE MASTER Silver DBA 2019」(1Z0-082)に合格しました

 はじめに

ORACLE MASTER Silver DBA 2019」(1Z0-082)に合格しました。(2021/9頃)

合格体験記を書いて行きます

試験の概要

https://education.oracle.com/ja/products/trackp_DB19COCA

学習期間

2.5ヶ月

試験範はDBA分野とSQL分野で50:50の比率、その中でDBA分野は大半はBronzeで既出の内容で、Silverでは多少発展的な内容が増えている、という体感でした。

DBA SilverのSQL分野は、SQL Silverの試験範囲と丸々被っているので、段階的に取りたい方はSQL SilverからとるとDBA Silverはだいぶ楽に取れるかな、という印象です。

2021/6にDBA Bronze試験を受けていたので、DBA分野の内容はほとんど復習、という感じで問題なかったです。

「ORACLE MASTER Bronze DBA 2019」(1Z0-085)に合格しました - 稀男のIT技術ブログ

SQL分野が結構ボリュームがありました。一つ一つの要素は簡単なのですが、その分覚える数が多くなり、かなり暗記科目でした。

業務でプログラミングをしてSQLもバリバリ書く人であれば全然難しくないと思います。

ただ、偏見ですが、インフラエンジニアは業務で書くSQLはせいぜいデータディクショナリや動的パフォーマンスビューへのSELECTだけなので、そこそこ努力が必要です。

学習方法

Bronzeの時と同様に、ORACLE MASTER Silver DBA 2019の唯一の参考書である「黒本」で勉強しました。

cosol.jp

Bronzeの時と同じですが、解説編を超ざっくり1周読んで、練習問題を解いて、解説編を普通に読んで、練習問題を解いて、解説編をじっくり読む。試験間近は練習問題を解いて解けない問題に関係するところだけ読む、というのを繰り返してました。

SQLに関しては、会社の開発環境で実施する手順作成時に、無駄にSELECT文でJOIN句書いてみたりファンクション使ってみたりしましたが、基本は参考書読むだけでした。

データベースの学習するためのテストデータとかってどこから持って来ればいいのでしょうかね?DBCAとかにはテストデータを入れるとかありますが、テストデータ作成SQLが配布されているようなきがします。

試験結果

合格しました。

合格ラインが正答率65%のところ、82%でした。

感想

DBA Bronze 2019とSQL Silver 2019の二つの試験+αの範囲を網羅しているため、かなりボリューミーな内容です。黒本の分厚さを書店で比較して貰えばわかると思います。

その分、実際に現場で利用する内容がかなり網羅できるので、OracleDatabase1年目のエンジニアが受けるにはちょうどいいレベルだと思います。

余談

2021/06にSilver DBAを取得しましたが、現場ではGrid、ASM、ACFS、RAC、Multitenant、EMCC、JDBC、RMAN、統計情報更新、実行計画などの(当時の自分にとって)奇奇怪怪な未知の言葉が飛び交っており、これでも全くわからないのか。。。と頭を抱えました。

これはDBA Goldに行かないとわからないのでは?ということで2022/03までにDBA Goldを受験する意思を固めました。

ただ、当時に戻れるのであれば、「Goldの試験範囲はMultitenant、RMAN、パフォーマンスチューニング、19c新機能だから、参考書で勉強するのはいいけど試験を受けるのは時期尚早だ」と言ってあげたいです。あと、Gridを勉強する方法が全然見当たらないのですが、皆さんどうしているんですかね?

「ORACLE MASTER Bronze DBA 2019」(1Z0-085)に合格しました

 はじめに

ORACLE MASTER Bronze DBA 2019」(1Z0-085)に合格したので、体験記を書いて行きます。

実は2021/6に合格し、時間が空いてしまい記憶が曖昧なのですが思い出せるだけ書いて行こうと思います。

資格の概要

https://education.oracle.com/ja/oracle-master-bronze-dba-available-only-in-japan/trackp_DB19CBRNZ

なぜ受験したのか

私は2021年4月に異動をして、データベース保守チームに配属になりました。

それまでOS、サーバ、監視、バックアップをメインでやっていて、データベースのことは全然わからなかったので、これを機にデータベースを自身の得意分野にしよう、と思いました。

データベースはOracleDatabaseなので、手っ取り早い学習をしたいと思い、Oracle MASTERの取得を目指すこととしました。

そこで、Oracle MASTER の登竜門である、DBA Bronzeを受けることにしました。

学習期間

3ヶ月ほど

最初の2ヶ月は異動直後ということもあり、ざっくり業務で必要な概念だけ把握するための勉強をしました。

※業務だとMultitenant、RMAN、GridInfrastructure、OracleDataApplianceなどBronze超えてGoldレベルの要素が当たり前に設計書に書かれていて目眩がしてました。

試験対策として勉強した時間は1ヶ月くらいだったと思います。

学習方法

まず、そもそもDB初心者で右も左もわからなかったため、Oracle関連で一番易しそうな以下の本で概念を勉強しました。

概ねBronzeの範囲はカバーしています。初心者にも読み進めやすかったです。

gihyo.jp

 

次に、ORACLE MASTER Bronze DBA 2019の唯一の参考書である「黒本」で勉強しました。

cosol.jp

内容は教科書パートと練習問題パートに分かれており、両方を何度も繰り返して行くことで習得していく作りになっています。

ざっくり読もうと教科書パートから読んだのですが、試験対策本だけあって詳細に書かれており、前述の本よりはとっつきにくかっったです。

本の前書きにも、先に練習問題パートを解いて解説を読み、その上で教科書パートを理解の補完に使うといい、と書いてありました。

Bronzeだったら試験対策はこの本1冊で十分だと思います。

(というか、ひとつ前の試験バージョンの12cの頃から黒本しか参考書ないんですよね。どうして。。)

試験結果

合格しました。

合格ラインが正答率65%のところ、95%でした。圧勝ですね。

 

感想

流石にエントリー資格だけあってそこまで難しくはなかったです。

Bronzeレベルだと「そもそもデータベース(RDBMS)とは」レベルの話から始まるので、LPIC level1やCCNAくらいの気軽さでデータベースの基礎的な概念をつかめるのでみんな受けるといいと思いました。

2021年時点の試験バージョン(2019)では、本資格は上位資格(DBA Silver)を取るのに必須ではないので、上位資格(DBA Silver)を直接受けに行った方が費用の節約にはなると思います。

※私は会社の補助で受けさせてもらいました。OracleMASTERは高額だから助かりますね。。。

余談

ブログを放置しすぎて一年ぶりの投稿です

本記事も2021/06に合格したのですが、全然投稿できてませんでした。

2021年度は異動で慣れるまで大変だったのと、近いうちにブログに書きますが、何個も資格試験を詰め込み過ぎたり、業務で触れた技術の勉強とかに追われて、プライベートがほぼインプットで潰れてしまい全く執筆をする体力がありませんでした。。。

結構今のチームは挑戦的なソフトウェアや管理ツールを扱うことが多く、面白いです。

色々とブログに書いて整理したいなーと思っているので、2022年度は順次書いて行きます。よろしくお願いします。

 

 

 

「AZ-900: Microsoft Azure Fundamentals」に合格しました

 はじめに

MicrosoftクラウドサービスであるAzurenの入門資格とも言うべき「AZ-900: Microsoft Azure Fundamentals」に合格しましたので体験記を書いていきます。

 

docs.microsoft.com

 

なぜ受験したのか

 

一言でいうと会社の方針で取ることになりました。

というのも、私はSIerの会社に勤めているのですが、AWSの利用実績はかなり多く、エンジニアの確保もしやすい状態です。AWSのなんとかパートナーにも選ばれてます。

ただ、Azureは同業他社と比べても実績が少ないので、エンジニア確保の面も踏まえて、会社として若手やパブリッククラウド経験者に資格をとらせる施策を進めており、私もその一員として選ばれた次第です。

 

学習期間

2週間です。

AWSパブリッククラウドの概念は理解していたので、似たようなサービスを覚えてしまえば、あとは多少の差異と用語の違いを理解すればよかったので難しくはなかったです。

 

学習方法

参考にした学習方法はこちらのブログです。

www.wantedly.com

 

上記ブログのままやれば合格できたので正直特に付け足すことないです。

 

強いて言うなら、udemyの問題は少々古いことがあるので、MicrosoftLearn「Azure の基礎」に出てこない知識が聞かれることがあります。正答できなかった問題は「Azure の基礎」に含まれているか確認し、含まれている場合だけ深堀りして学習しましょう。

 

また、「Azure の基礎」だとハンズオンで学習できるサービスが限られるので、理解が難しい分野はMicrosoftLearnでモジュールを検索してみるといいと思います。

docs.microsoft.com

 

試験結果

合格しました。点数は760点でした。(合格点は700以上)

 

感想

Azureで一番簡単な試験なので、「これでAzureが使える!」ということはないですが、AWSとの比較が色々面白かったです。

後発サービスということもあり、VirtualMachineとかBlobストレージは完全にEC2とS3じゃん、それから派生するサービスは一緒じゃん、という感じで既視感バリバリでした。

逆に、個人的に一番差異を感じた点は組織管理、コスト管理についてです。

AWSだと複数アカウントを持ってOrganizationで管理する仕組みですが、Azureの場合は一つのAzureアカウント内で支払い方法や請求書を分けることができます。この辺は後発サービスの強みなのか、エンタープライズ向けビジネスを長くやってきたMicrosoftならではの仕組みなのかなと思いました。

あとは、AzureFundamentalsでIoTや機械学習、AIのサービスを全面に押し出していて、よりアプリ開発者向けの印象をつけようとしているのかなと思いました。

AWSはIaaS,PaaSの問題が多かったです。