1: dockerにmongodbをインストールするステップ1: dockerにmongodbをインストールする [root@iZbp1gp1t778obaz5m8vk8Z /]# docker 検索 mongo [root@iZbp1gp1t778obaz5m8vk8Z /]# docker pull mongo:latest リポジトリ docker.io/library/mongo をプルしようとしています... 最新: docker.io/library/mongo からプル f22ccc0b8772: プル完了 3cf8fb62ba5f: プル完了 e80c964ece6a: プル完了 329e632c35b3: プル完了 3e1bd1325a3d: プル完了 4aa6e3d64a4a: プル完了 035bca87b778: プル完了 874e4e43cb00: プル完了 08cb97662b8b: プル完了 f623ce2ba1e1: プル完了 f100ac278196: プル完了 6f5539f9b3ee: プル完了 ダイジェスト: sha256:02e9941ddcb949424fa4eb01f9d235da91a5b7b64feb5887eab77e1ef84a3bad ステータス: docker.io/mongo:latest の新しいイメージをダウンロードしました [root@iZbp1gp1t778obaz5m8vk8Z /]# docker イメージ リポジトリ タグ イメージ ID 作成 サイズ docker.io/mongo 最新 3068f6bb852e 5 日前 493 MB インストールするバージョンを指定します。最新バージョンをインストールしないことをお勧めします。これは非常に悪いです。私はこのバージョンが好きです [root@iZbp1gp1t778obaz5m8vk8Z ~]$ docker pull mongo:4.2.1 ステップ2: dockerでmongodbを起動する [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker run -itd --name mongo --restart=on-failure:10 -d -m 1G --memory-swap 4G -p 27017:27017 -v /data/mongodb:/data/db mongo 1bcf117db0a8e86840a1acac769338053e8dff25a41bd1488d7a274ea171371a [ルート@iZbp1gp1t778obaz5m8vk8Z mongodb]# [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker ps -a コンテナID イメージ コマンド 作成ステータス ポート名 1bcf117db0a8 mongo "docker-entrypoint..." 7 秒前 7 秒前にアップ 0.0.0.0:27017->27017/tcp mongo ここでは、ログインせずに新しい docker ユーザーに表示されるように設定します。起動が完了した後のパラメータについては、前の記事を参照してください。アカウントの調整を始めましょう これはバージョン 4.2.1 の起動です [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker run -itd --name mongo --restart=on-failure:10 -d -m 1G --memory-swap 4G -p 27017:27017 \ -v /data/mongodb:/data/db \ mongo:4.2.1 --auth [ルート@iZbp1gp1t778obaz5m8vk8Z mongodb]# [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker ps -a コンテナID イメージ コマンド 作成ステータス ポート名 1bcf117db0a8 mongo "docker-entrypoint..." 7 秒前 7 秒前にアップ 0.0.0.0:27017->27017/tcp mongo ここでは、ログインせずに新しい docker ユーザーに表示されるように設定します。起動が完了した後のパラメータについては、前の記事を参照してください。アカウントの調整を始めましょう 《共通dockerパラメータの操作方法》 ステップ3: mongodbでユーザー情報を構成する MongoDbのアカウント情報を作成します [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker exec -it mongo mongo admin MongoDB シェル バージョン v4.4.2 接続先: mongodb://127.0.0.1:27017/admin?compressors=disabled&gssapiServiceName=mongodb 暗黙的なセッション: session { "id" : UUID("a2d4a27c-a9dc-4af4-90cb-233e41394d51") } MongoDB サーバー バージョン: 4.4.2 MongoDB シェルへようこそ。 対話型ヘルプを表示するには、「help」と入力してください。 より包括的なドキュメントについては、 参考: ご質問はMongoDB開発者コミュニティフォーラムをご覧ください https://community.mongodb.com > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); ユーザーが正常に追加されました: 「ユーザー」:「管理者」、 「役割」: [ { 「ロール」:「userAdminAnyDatabase」、 「db」:「管理者」 } ] } > db.auth('admin', '123456') 1 > db.grantRolesToUser("admin", [ { role: "readWrite", db: "admin" } ]) MongoDbのアカウント情報を作成します。認証が必要ない場合はこの手順をスキップできますが、本番環境では実行しないでください。# dockerのコマンド操作インターフェースに接続します [root@izwz99z5o9dc90keftqhlrz ~] # docker exec -it mongo mongo admin # パスワードが 123456 の admin という名前のユーザーを作成します。 > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); # 上記で作成したユーザー情報を使用して接続を試みます。 > db.auth('admin', '123456') # 管理者権限、読み取りおよび書き込み権限を付与する> db.grantRolesToUser("admin", [ { role: "readWrite", db: "admin" } ]) 上記は私が初めて入った時のものです 2 回目に入力するときは、ルールに従う必要があります。最初にガイド データベースを入力し、次にユーザーを追加する必要があります。そうしないと、どこにユーザーを追加したかわかりません。> ガイドの使用 #または、直接作成するときに所有者権限を付与します> db.createUser({user:"guides",pwd:"123456",roles:[{role:"dbOwner",db:"guides"}]}) #このアカウントに接続> db.auth('guides','123456') #このアカウントを使用して、ガイド データベースにデータを書き込みます - このドキュメント> db.guides.insert({"name":"liuxing", "age":31}) 2: Springbootはmongodbにログを収集します収集ログは特に粗い ステップ1: pom.xmlに構成を追加する <!-- mongodb データベース操作 --> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </依存関係> ステップ2: application.ymlで接続を構成する #Spring Bootにmongodbの場所を知らせます。認証は不要です。--authはユーザー名とパスワードを必要としません。Springを覚えておいてください。 データ: モンゴDB: ホスト: 47.110.57.115 ポート: 27017 認証データベース: ガイド データベース: ガイド ユーザー名: ガイド パスワード: '123456' 最大接続アイドル時間: 1000 ホストあたりの最大接続数: 200 最大待機時間: 60000 最大接続寿命: 0 接続タイムアウト: 1000 ソケットタイムアウト: 2000 認証データベース 4.0 以上: admin と書かないでください。または 4.2.1 認証データベース: ガイド ステップ3: AOPスライスログを取得する パッケージ com.zhx.guides.assistant.dto; com.zhx.guides.assistant.util.object.TimeHelper をインポートします。 java.io.Serializable をインポートします。 java.util.Date をインポートします。 /** * @日付作成時間: 2020-12-17 14:33 * @Author 著者名: Liux * @バージョン 1.0 * @Copyright 著作権者 * @Directionクラスの説明 */ パブリッククラスHttpRequestLogはSerializableを実装します{ パブリック最終静的文字列 collectName = "guides" ; プライベート文字列 url ; プライベート文字列 httpMethod ; プライベート文字列クラス名; プライベート文字列メソッド名; プライベート文字列 ip ; プライベート文字列 requestParam ; プライベート日付 nowTime = TimeHelper.getCurrentDate(); .... 取得セット省略} パッケージ com.zhx.guides.assistant.web.aspect; com.alibaba.fastjson.JSONObject をインポートします。 com.zhx.guides.assistant.dto.HttpRequestLog をインポートします。 org.aspectj.lang.JoinPoint をインポートします。 org.aspectj.lang.ProceedingJoinPoint をインポートします。 org.aspectj.lang.annotation.* をインポートします。 org.slf4j.Logger をインポートします。 org.slf4j.LoggerFactory をインポートします。 org.springframework.beans.factory.annotation.Autowired をインポートします。 org.springframework.data.mongodb.core.MongoTemplate をインポートします。 org.springframework.stereotype.Component をインポートします。 org.springframework.web.context.request.RequestContextHolder をインポートします。 org.springframework.web.context.request.ServletRequestAttributes をインポートします。 javax.servlet.http.HttpServletRequest をインポートします。 /** * @クラス WebLogAspect * @バージョン 1.0 * @日付作成時間: 2020-03-03 10:05 * @Copyright 著作権は会社が所有します * @Directionクラスの説明 */ @側面 @成分 パブリッククラス WebLogAspect { オートワイヤード プライベート MongoTemplate mongoTemplate; プライベート最終静的 Logger ロガー = LoggerFactory.getLogger(WebLogAspect.class); /** コントローラー パッケージで定義されているすべてのリクエストをエントリ ポイントとして取得します */ @Pointcut("実行(public * com.zhx.guides.assistant.interfaces.controller..*.*(..))") パブリック void webLog() {} /** * ポイントカット前のウィービング * @param joinPoint * @throws スロー可能 */ @Before("webLog()") パブリック void doBefore(JoinPoint joinPoint) throws Throwable { // リクエストログの印刷を開始します。ServletRequestAttributes attribute = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest リクエスト = attribute.getRequest(); HttpRequestLog を新しい HttpRequestLog() に追加します。 リクエストの URL を GET します。 リクエストのログにメソッドを設定します。 httpRequestLog.setClassName( joinPoint.getSignature().getDeclaringTypeName() ); httpRequestLog.setMethodName( joinPoint.getSignature().getName()); リクエストのIPアドレスを取得します。 // リクエスト関連のパラメータを印刷します logger.info("======================== Start =========================="); // リクエスト URL を印刷 logger.info("URL: {}", httpRequestLog.getUrl() ); // HTTP メソッドを印刷 logger.info("HTTP メソッド: {}", httpRequestLog.getHttpMethod()); // コントローラー呼び出しと実行メソッドの完全なパスを出力します。logger.info("Class Method : {}.{}", httpRequestLog.getClassName() , httpRequestLog.getMethodName()); // 要求されたIPを印刷する logger.info("IP: {}", httpRequestLog.getIp() ); //印刷要求の入力パラメータを試してください{ オブジェクト requestParam = joinPoint.getArgs(); リクエストログにリクエストパラメータを設定します。 logger.info("パラメータ: {}", httpRequestLog.getRequestParam()); }catch (例外 e){ logger.info("パラメータの印刷に失敗しました。例外: {}", e.getMessage()); }ついに { httpRequestLog.setClassName( null ); try{mongoTemplate.save( httpRequestLog 、 HttpRequestLog.collectName );}catch (例外 e){} } } /** * ポイントカットの後に織り込む * @throws Throwable */ @After("webLog()") パブリック void doAfter() は Throwable をスローします { logger.info("======================== 終了 =========================="); } /** * ラップアラウンド * @param proceedingJoinPoint * @戻る * @throws スロー可能 */ @Around("webLog()") パブリックオブジェクトdoAround(ProceedingJoinPoint proceedingJoinPoint)はThrowableをスローします{ 長い開始時間 = System.currentTimeMillis(); オブジェクト結果 = proceedingJoinPoint.proceed(); // パラメータを出力します logger.info("戻り値: {}", JSONObject.toJSONString(result)); // 実行時間 logger.info("Time: {} ms", System.currentTimeMillis() - startTime); 結果を返します。 } } パッケージ com.zhx.guides.assistant.util.object; org.apache.commons.lang.StringUtils をインポートします。 java.util.Date をインポートします。 /** * @クラス TimeHelper * @バージョン 1.0 * @日付作成時間: 2018/12/21 09:26 * @Copyright 著作権者 * @Directionクラスの説明 */ パブリッククラス TimeHelper { /** *現在の時刻* @return */ パブリック静的日付 getCurrentDate(){ カレンダーcalendar = Calendar.getInstance(); カレンダー.getTime() を返します。 } } 3: ログの保存の効果を確認する注: 使用されている mongodb のバージョン: 4.2.1 に注意してください。順番に設定して使用してください。 最新バージョンをご利用の場合、各種権限が通らないなどの問題が発生する場合がありますので、4.2.1 安定版に切り替えてください。最新バージョンの使用は、モルモットになるようなものです。 Docker mongoDB 4.2.1 のインストールと springboot ログの収集に関するこの記事はこれで終わりです。Docker mongoDB のインストールと springboot ログの収集の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次1. 計算プロパティ構文: 1. 省略形:文法: 2. 文章を完成させる: 2. モニタリング(...
私は SQL の初心者で、オープンソースのインストールは非常に簡単だと思っていましたが、その過程でい...
Jenkins をインストールした後、プラグインの初期ダウンロードが常に失敗し、インストールが失敗し...
説明する: fuser は、現在ディスク上のファイル、マウント ポイント、さらにはネットワーク ポー...
AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...
1. フロート+オーバーフロー:非表示このメソッドは主にオーバーフローを通じて BFC をトリガーし...
ロード バランシングは、サーバー クラスタの展開でよく使用されるデバイスです。マシンのパフォーマンス...
以下の分析は製品設計原則に関するものですが、そのほとんどはウェブサイト製品に基づいているため、ユーザ...
同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...
innobackupex を使用してバックアップする際に MySQL がサーバーに接続できない場合は...
MySQL 5.7コマンドを使用するMySQLコマンドラインクライアント1. パスワードを入力してく...
MySQLをインストールしてメモしておきます。うまくインストールできるか分かりませんが、試してみます...
目次1. ソリューション 1 (UDF)デモケース2. ソリューション2(binlogの解析)キャナ...
適切に機能するテーブル プロパティ設定:コードをコピーコードは次のとおりです。 <テーブル セ...
私たちの日常的な開発作業では、テキストのオーバーフロー、切り捨て、省略は、考慮する必要がある非常に一...