sql >> データベース >  >> RDS >> PostgreSQL

Dockerコンテナ内で実行されているPostgreSQLを監視する方法:パート2

    これは、Dockerコンテナ内で実行されているPostgreSQLを監視するマルチシリーズの第2部です。パート1では、Dockerコンテナー、ポリシー、およびネットワーキングの概要を説明しました。このパートでは、Dockerの構成を続行し、最後にClusterControlを介した監視を有効にします。

    PostgreSQLは古い学校のオープンソースデータベースであり、その人気は依然として高まっており、今日のほとんどのクラウド環境で広く使用され、受け入れられています。

    コンテナ内で使用する場合、Dockerで簡単に構成および管理でき、作成にさまざまなタグを使用して、Dockerがインストールされている世界中の任意のコンピューターに出荷できますが、これはすべてDockerに関するものです。

    次に、PostgreSQLについて説明します。まず、データベース内の「postgres」ユーザーとは異なる「postgres」というOSユーザーがコンテナ内で同時に実行している6つの主要なプロセスをリストします。はスーパーユーザーです。

    画像の青い矢印は、コンテナ内に入力されたコマンドを表示していることに注意してください。

    $ ps auxww
    PostgreSQLのメインプロセス

    リストの最初のプロセスはPostgreSQLサーバーであり、他のプロセスは彼によって開始されます。彼らの任務は基本的に、サーバーで何が起こっているかを分析することであり、統計入力を実行するサブプロセス、ログの書き込み、およびこれらの種類のものです。

    ClusterControlを使用して、PostgreSQLサーバーを備えたこのコンテナー内のアクティビティを監視します。そのためには、安全に接続するためにSSHをインストールする必要があります。

    Secure Shell Server(SSH)

    PostgreSQLコンテナに関する情報を収集するには、SSHに勝るものはありません。あるIPアドレスから別のIPアドレスへのリモートアクセスを提供します。これにより、すべてのClusterControlがジョブを実行する必要があります。

    SSHはリポジトリからダウンロードする必要があり、そのためにはコンテナ内にいる必要があります。

    $ docker container exec -it postgres-2 bash
    $ apt-get update && apt-get install -y openssh-server openssh-client
    コンテナ「postgres-2」へのSSHのインストール

    インストール後、構成を編集し、サービスを開始し、rootユーザーのパスワードを設定し、最後にコンテナーを終了します。

    $ sed -i 's|^PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
    $ sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
    $ service ssh start
    $ passwd
    $ exit
    「postgres-2」コンテナでのSSHの設定、パート1/2

    ClusterControlによる監視

    ClusterControlには、PostgreSQLのすべてのプロセスをリアルタイムで監視できる詳細な統合システムがあり、データを安全に保ち、データベースのパフォーマンスを追跡し、もちろん異常が発生したときにアラートを提供するアドバイザーのライブラリも付属しています。

    SSHを構成すると、ClusterControlはOSハードウェアアクティビティを監視し、データベースと外部レイヤーの両方に関する洞察を提供できます。

    新しいコンテナを実行し、それをコンピュータのポート5000に公開すると、ブラウザからシステムにアクセスできるようになります。

    $ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
    SevereninesClusterControlのコンテナー「s9s-ccontrol」の実行

    展開すると、SSH構成のみが残ります。ユーザー定義のブリッジネットワークを使用しているため、DNSを使用できます。

    $ docker container exec -it s9s-ccontrol bash
    $ ssh-copy-id postgres-2
    「postgres-2」コンテナでのSSHの設定、パート2/2

    「yes」と入力し、前に提供したパスワードを指定すると、SSHを使用してrootとして「postgres-2」コンテナにアクセスできます。

    $ ssh postgres-2
    SSH接続を正常に確認しています

    この新しい色である水色は、データベース内のアクティビティを表すために以下で使用されます。上記の例では、「s9s-ccontrol」から「postgres-2」コンテナにアクセスしましたが、それでもrootユーザーです。私と一緒にあなたの注意と批判を続けてください。

    したがって、次のステップはブラウザに移動し、 http:// localhost:5000 / clustercontrol / users / welcome /にアクセスします。 アカウントを登録するか、すでにアカウントをお持ちの場合は、 http:// localhost:5000 / clustercontrol / users / loginにアクセスしてください。 。

    次に、「既存のサーバー/クラスターのインポート」を実行し、以前の構成を入力します。 「PostgreSQL&TimescaleDB」タブを選択する必要があります。このデモの「SSHユーザー」フィールドに「root」と入力するだけです。次に、最後に「クラスター名」を入力します。任意の名前を入力できます。インポートして監視する必要なPostgreSQLコンテナーを必要な数だけ保持するのは誰ですか。

    「postgres-2」データベースのインポート、パート1/2

    次に、PostgreSQLコンテナ、ユーザー「postgres」、パスワード「5af45Q4ae3Xa3Ff4」、および目的のコンテナに関する情報を入力します。 SSHサービスはPostgreSQLコンテナ内でアクティブである必要があることを覚えておくことが非常に重要です。

    「postgres-2」コンテナのインポ​​ート、パート2/2

    「インポート」ボタンを押すと、ClusterControlは「PostgreSQL」と呼ばれるクラスター内のPostgreSQLコンテナー「postgres-2」の管理を開始し、インポートのプロセスが完了すると通知します。

    コンテナ「postgres-2」のインポートプロセスに関するログ

    完了すると、システムが[クラスター]タブに表示され、最近作成されたクラスターとさまざまなオプションがセクションに分けられます

    最初の視覚化ステップは、[概要]オプションです。

    PostgreSQLクラスターが正常にインポートされました

    ご想像のとおり、データベースは空であり、楽しみのためにここで混乱することはありませんが、SQLおよびデータベースプロセスに関する統計を含む小規模な作業を行っているグラフィックは引き続き機能します。

    SQLおよびデータベースアクティビティに関する統計の表示

    実世界のシナリオシミュレーション

    アクションを実行するために、Pythonを使用してCSVファイルを作成し、YouTubeですばらしいコースを提供しているSocraticaのGitHubリポジトリを調べて、それらのファイルを無料で利用できるようにしました。

    要約すると、作成されたCSVファイルには、人に関する900万、999千、および999のレコードがあり、それぞれにID、名、姓、および誕生日が含まれています。ファイルのサイズは324MBです:

    $ du -s -h persons.csv
    CSVファイルのサイズを確認する

    このCSVファイルをPostgreSQLコンテナにコピーしてから、もう一度コピーしますが、今回はデータベースにコピーし、最後にClusterControlで統計を確認します。

    $ docker container cp persons.csv postgres-2:/persons.csv
    $ docker container exec -it postgres-2 bash
    $ du -s -h persons.csv
    $ su - postgres
    $ psql
    CSVファイルをコンテナに転送してデータベースに入力する

    さて、私たちは今データベースにいます。スーパーユーザー「postgres」として、矢印の色の違いに注意してください。

    次に、データベースとテーブルを作成し、CSVファイルに含まれているデータを入力して、最後にすべてが正常に機能しているかどうかを確認する必要があります。

    $ CREATE DATABASE severalnines;
    $ \c severalnines;
    $ CREATE TABLE persons (id SERIAL NOT NULL, first_name VARCHAR(50), last_name VARCHAR(50), birthday DATE, CONSTRAINT persons_pkey PRIMARY KEY (id));
    $ COPY persons (id, first_name, last_name, birthday) FROM '/persons.csv' DELIMITER ',' CSV HEADER;
    新しいデータベースに接続してCSVファイルをインポートする

    このプロセスは完了するまでに数分かかります。

    では、いくつかのクエリを入力しましょう:

    データベース「severalnines」のクエリ

    ClusterControlを今見てみると、ハードウェアに関する統計に何らかの動きがありました:

    ClusterControl内のCPUに関する統計を表示する

    クエリを監視するためのセクション全体が使いやすいUIで提供されます:

    ClusterControl内のクエリに関する統計を表示する

    PostgreSQLデータベースに関する統計は、主要な職務で潜在能力をすべて発揮するのに最適なDBAに役立ちます。また、ClusterControlは、データベースプロセスから収集されたすべてのデータに基づいて情報を提供し、リアルタイムで発生するすべてのアクティビティを分析する完全なシステムです。

    >

    ClusterControlを使用すると、DBAは、ローカルまたはクラウドでバックアップを作成するためのツールのフルセット、レプリケーション、ロードバランサー、サービスとの統合、LDAP、ChatOps、Prometheusなどを使用してスキルを簡単に拡張することもできます。

    結論

    この記事では、Docker内でPostgreSQLを構成し、ユーザー定義のブリッジネットワークとSSHを使用してClusterControlと統合し、データベースにCSVファイルを入力するシナリオをシミュレートしてから、ClusterControlユーザーインターフェイスで全体的なクイックチェックを実行しました。 。


    1. 2016年プラハPostgreSQL開発者デー

    2. ダウンロードするファイルがない場合にSSISFTPタスクが失敗しないようにするにはどうすればよいですか?

    3. 日付範囲の重複チェック制約

    4. Oracleで文字列内の単語数をカウントするにはどうすればよいですか?