openGauss DBMind自治運維繫統的安裝和部署

小侃資料庫發表於2023-04-26

DBMind作為openGauss資料庫的一部分,為openGauss資料庫提供了自動駕駛能力,是一款領先的開源資料庫自治運維平臺。透過DBMind, 您可以很容易地發現資料庫的問題,同時可以實現秒級的資料庫問題根因分析



本文將詳細描述如何安裝部署openGauss DBMind自治運維平臺。

1

安裝準備

1.1 環境資訊

假設在主控節點192.168.100.4上部署DBMind,有一套埠號為19999的叢集環境,環境資訊如下:

node

node_ip

state

主節點

192.168.100.1

Primary

備節點 1

192.168.100.2

Standby

備節點 2

192.168.100.3

Standby

假設需要在test_user使用者下安裝,需要在這4個節點上建立好使用者,可以使用如下命令,建立使用者並指定登入目錄。

    useradd -m test_user -d /home/test_user

    安裝之前需要修改相關檔案的許可權,並使用su - test_user命令切換到目標使用者空間下安裝。test_user使用者要能夠使用cm_ctl命令,否則會導致cmd_exporter獲取不到資料庫節點的資訊。

    1.2 安裝包

    安裝和部署過程中需要用到的安裝包和下載地址如下,使用者根據自己的伺服器架構進行選擇:


    File Name

    Download Address

    OS/Arch

    DBMind

    dbmind-installer-x86_64-python3.10.sh.tar.gz

    linux/x86_64

    DBMind

    dbmind-installer-aarch64-python3.10.sh.tar.gz

    linux/arm64

    Prometheus

    prometheus-2.43.0.linux-amd64.tar.gz

    linux/x86_64

    Prometheus

    prometheus-2.43.0.linux-arm64.tar.gz

    linux/arm64

    node_exporter

    node_exporter-1.5.0.linux-amd64.tar.gz

    linux/x86_64

    node_exporter

    node_exporter-1.5.0.linux-arm64.tar.gz

    linux/arm64

    如果需要其他版本或架構的安裝包,使用者可以到prometheus官網進行下載。可以使用uanme -m命令檢視伺服器架構。

    1.3 資料庫使用者

    本文以如下的使用者和資料庫資訊作為示例。

    • username:dbmind_monitor

    • password:test_123

    • port:6789

    • metadatabase:metadatabase

    omm登入主節點,併為資料庫節點和DBMind伺服器資料庫建立dbmind_monitor使用者:

      gs_guc reload -D datanode -c 'password_encryption_type=1'  gsql -p {port} -d postgres -c 'create user {username:dbmind_monitor} with password {password:test_123} ;'  gsql -p {port} -d postgres -c 'alter user {username:dbmind_monitor} monadmin; '  gs_guc reload -D datanode -c 'password_encryption_type=2'  # 可選,將該引數改回去

      說明:

      本文中為了突出命令中的引數配置,使用了{key:value}的形式。實際情況下,應輸入如下命令 :

        gs_guc reload -D datanode -c 'password_encryption_type=1'  gsql -p {port} -d postgres -c 'create user dbmind_monitor with password test_123;'  gsql -p {port} -d postgres -c 'alter user dbmind_monitor monadmin;'  gs_guc reload -D datanode -c 'password_encryption_type=2'  # 可選,將該引數改回去

        DBMind伺服器,建立後設資料庫:

          grant all privileges to {username:dbmind_monitor};  \c postgres {username:dbmind_monitor};          create database {metadatabase:metadatabase};

          建立完成後,使用者可透過命令gsql -d postgres -p 6789 -r -U dbmind_monitor -W test_123登入到資料庫上,並輸入\l命令檢視後設資料庫metadatabase是否存在。

          2

          安裝DBMind

          DBMind會定期在openGauss-DBMind專案的release頁面釋出DBMind的安裝包,可以透過下載該DBMind安裝包進行安裝部署。

          將安裝包dbmind-install-x86_64-python3.10.sh.tar.gz放到主控節點test_user使用者空間下並切換到使用者空間後,執行下述命令完成安裝:

          1. 解壓:

            tar zxvf dbmind-install-x86_64-python3.10.sh.tar.gz

            2. 安裝:安裝過程中會提示確認安裝位置和新增環境變數,按照提示輸入回車或yes就行了。

              sh dbmind-install-x86_64-python3.10.sh

              3. 重新載入環境變數:

                source ~/.bashrc

                4. 測試是否安裝成功:

                  gs_dbmind --help

                  3 部署DBMind

                  DBMind有兩種部署方式,分別為手動部署和自動部署,推薦使用自動部署的方式,其會自動將prometheus、node_exporter、opengauss_exporter、cmd_expoter和reprocessingexporter元件安裝到指定的節點。

                  3.1 自動部署--推薦

                  自動部署會根據配置檔案中的資訊自動執行部署,所以需要先將配置檔案openGauss-DBMind/dbmind/components/deployment/deploy.conf配置好。可以手動將檔案配置好,也可以使用互動式配置。推薦使用手動配置的方式。

                  需要提前將prometheus和node_exporter兩個安裝包放置在使用者根目錄的downloads資料夾下,並修改屬主為testuser使用者。

                  手動配置--推薦

                  使用手動配置的方式,需要提前將例項資訊和引數填入openGauss-DBMind/dbmind/components/deployment/deploy.conf配置檔案。

                  假設在test_user使用者空間下進行安裝,即host_username=test_user,deploy.conf配置檔案資訊如下:

                    
                    [DOWNLAODING]
                    
                    host = 
                    
                    node_exporter = node_exporter-1.5.0.linux-amd64
                    
                    prometheus = prometheus-2.42.0.linux-amd64node_exporter_sha256 = af999fd31ab54ed3a34b9f0b10c28e9acee9ef5ac5a5d5edfdde85437db7acdb
                    
                    prometheus_sha256 = 422dab055ed9c7bcaff52b71805f9192c6fac0de6b7e78dd278e70ee2663dcc
                    
                    
                    
                    [PROMETHEUS] host = 192.168.100.4 ssh_port = 22 host_username = test_userpath = /home/test_user/prometheus # 使用者可以指定其他的安裝路徑 listen_address = 192.168.100.4 prometheus_port = 9090 reprocessing_exporter_port = 8181
                    [EXPORTERS] targets = 192.168.100.1:19999/postgres,192.168.100.2:19999/postgres,192.168.100.3:19999/postgres ssh_port = 22host_username = test_userpath = /home/test_user/node_exporter # 使用者可以指定其他的安裝路徑 database_username = dbmind_monitor listen_address = 192.168.100.4 opengauss_ports_range = 9187-9197 node_exporter_port = 9100 cmd_exporter_port = 9180
                    [SSL] enable_ssl = False# 該模組其他內容不用修改,內容略

                    可以使用sha256sum命令生成檔案的sha256校驗碼,如下所示:

                      sha256sum prometheus-2.43.0.linux-amd64.tar.gz

                      然後切換到openGauss-DBMind目錄下,執行如下命令:

                        gs_dbmind component deployment --offline -c dbmind/components/deployment/deploy.conf

                        該命令會提示使用者輸入使用者密碼,然後將主控節點downloads目錄下的安裝包解壓並複製到資料庫節點。

                        最後執行如下命令,會自動啟動DBMind的各exporter元件和prometheus。如果各元件都正常啟動,則可以執行啟動DBMind步驟。

                          gs_dbmind component deployment --run

                          注意:

                          • 需要提前將prometheus和node_exporter兩個安裝包放置在使用者根目錄的downloads資料夾下,並修改屬主為test_user使用者。

                          • 配置檔案中[DOWNLOADING]模組的安裝包名字不帶.tar.gz字尾。

                          互動式配置

                          透過下述命令,使用者可以在互動式介面中,根據提示資訊輸入需要監控的openGauss例項資訊和引數。

                            gs_dbmind component deployment --offline

                            3.2 手動部署

                            規劃配置

                            使用手動部署的方式,需要使用者手動安裝prometheus和相關的exporter元件,先做如下的規劃配置:


                            元件

                            地址

                            備註

                            node_exporter

                            192.168.100.1: 9100<br />192.168.100.2: 9100<br />192.168.100.3: 9100

                            每個資料庫節點上都需要安裝

                            cmd_exporter

                            192.168.100.2: 9180

                            只需要在一個備節點上安裝

                            opengauss_exporter

                            192.168.100.4: 9187 -> 192.168.100.1: 19999<br />192.168.100.4: 9188 -> 192.168.100.2: 19999<br />192.168.100.4: 9189 -> 192.168.100.3: 19999

                            每個資料庫節點上都需要安裝,<br /> 在主控節點遠端安裝

                            prometheus

                            192.168.100.4: 9090

                            只需在主控節點安裝

                            reprocessing_exporter

                            192.168.100.4: 8181

                            和prometheus 一起部署到主控節點

                            node_exporter

                            使用者需要在資料庫的各個節點部署node_exporter,將node_exporter安裝包放入資料庫節點並切換到test_user使用者空間後,執行如下命令:

                            1. 解壓安裝包:

                              tar zxvf node_exporter-1.5.0.linux-amd64.tar.gzcd node_exporter-1.5.0.linux-amd64

                              2.啟動 預設埠號為9100:

                                ./node_exporter > node_exporter.log 2>&1 &

                                3. 如果埠號被佔用,可以指定埠號:

                                  ./node_exporter --web.listen-address=:9101 > node_exporter.log 2>&1 &

                                  輸入上述命令後,如果顯示[1]+ Exit字元表示node_exporter安裝失敗,可以透過node_exporter.log日誌檢視原因。

                                  cmd_exporter

                                  cmd_exporter用來執行cmd命令並獲取返回結果以及採集日誌資訊,當前主要用於採集叢集狀態,在一個備資料庫節點上安裝就可以了。

                                  cmdexporter元件需要透過dbmind安裝,所以需要先在一個備節點上安裝dbmind,安裝完之後,再透過gs_dbmind的component子命令安裝cmd_exporter,如下所示。

                                    gs_dbmind component cmd_exporter --web.listen-address 0.0.0.0 --web.listen-port 9180 --disable-https

                                    執行完上述命令,如果控制檯顯示The process is starting,說明安裝無異常。

                                    opengauss_exporter

                                    opengauss_exporter是DBMind採集資料庫的元件,從openGauss資料庫中讀取系統表(或系統檢視)的資料,並透過Prometheus儲存起來。支援遠端部署,需要在每個資料庫節點上安裝。

                                    使用者可以透過遠端部署的方式在主控節點上執行下述命令,從而將opengauss_exporter安裝到對應的資料庫節點上,opengauss_exporter的預設埠號範圍是9187-9197,如果被佔用可以使用其他埠。

                                    (1)方式一:URL格式

                                      gs_dbmind component opengauss_exporter --urlpostgresql://dbmind_monitor:test_123@192.168.100.1:19999/postgres --web.listen-address 0.0.0.0 --web.listen-port 9187 --log.level info --disable-https

                                      說明:

                                      對於採用URL格式的DSN,由於@等特殊字元用來分割URL串中各個部分的內容,故需要URL編碼。例如某個使用者dbmind的密碼為Test@123,則URL格式的DSN為psotgresql:dbmind:Test%40123@127.0.0.1:19999,即將@字元編碼為%40。

                                      (2)方式二:K-V格式

                                        gs_dbmind component opengauss_exporter --url "dbname=postgres user=dbmind_monitor password=test_123 host=192.168.100.1 port=19999" --web.listen-address 0.0.0.0 --web.listen-port 9187 --log.level info --disable-https

                                        執行完上述命令,如果控制檯顯示The process is starting,說明安裝無異常。也可以透過下述命令檢查opengauss_exporter是否已啟動。

                                          # 埠號9187為使用者指定的埠號, 如果失敗會顯示Connection refused  curl -vv

                                          prometheus

                                          prometheus是業內非常流行的開源監控系統,同時本身也是一款時序資料庫。需要將其安裝在主控節點,預設佔用埠為9090,將prometheus安裝包放入主控節點環境並切換到目標使用者空間後,執行如下命令:

                                          1. 解壓並切換到prometheus目錄下:

                                            tar zxvf prometheus-2.42.0.linux-amd64.tar.gzcd prometheus-2.42.0.linux-amd64/

                                            2. 修改prometheus配置檔案:

                                              vi prometheus.yml

                                              在該檔案中找到 scrape_configs 部分,該部分包含了所有需要被抓取的targets的配置資訊,使用者需要根據自己的節點數量和埠占用情況進行修改。根據規劃配置可做如下配置:

                                                   - job_name: 'prometheus'     static_configs:      - targets: ['192.168.100.4:9090']  - job_name: 'opengauss_exporter'     static_configs:      - targets: ['192.168.100.4:9187', '192.168.100.4:9188', '192.168.100.4:9189']  - job_name: 'node_exporter'     static_configs:      - targets: ['192.168.100.1:9100', '192.168.100.2:9100', '192.168.100.3:9100']  - job_name: 'reprocessing_exporter'    static_configs:      - targets: ['192.168.100.4:8181']  - job_name: 'cmd_exporter'    static_configs:      - targets: ['192.168.100.2:9180']

                                                3. 啟動prometheus並將日誌輸入到同目錄下的prometheus.log裡:

                                                   ./prometheus --web.enable-admin-api --web.enable-lifecycle -- storage.tsdb.retention.time=1w >./prometheus.log 2>&1 &

                                                  reprocessing_exporter

                                                  reprocessing_exporter是一個用於二次加工處理資料的exporter。由於node_exporter、opengauss_exporter儲存到prometheus中的資料是即時的監控資訊,而只透過這些資訊是無法反應某些指標的瞬時增量資訊的。因此,reprocessing_exporter可以用來計算增量資訊或者聚合結果等。

                                                  由於reprocessing_exporter是從prometheus中獲取指標資料,進行二次加工處理後再返回給prometheus。因此,它與prometheus是一一對應的,即如果只有一個prometheus服務,則只需要一個reprocessing_exporter即可。prometheus和reprocessing_exproter一起部署在主控節點上,reprocessing_exproter依賴prometheus,所以需要先啟動prometheus再啟動reprocessing_exporter。可以透過下述命令啟動reprocessing_exporter:

                                                    # host_ip為主控節點的ip地址,9090為prometheus佔用的埠號,8181為reprocessing_exporter佔用的埠號,使用者可以按需修改gs_dbmind component reprocessing_exporter host_ip 9090 --web.listen-address 0.0.0.0 --web.listen-port 8181 --disable-https

                                                    啟動完成之後,訪問prometheus網頁:http://{主控節點ip}:9090/,開啟Status/Targets,檢視所有exporter的啟動狀態。

                                                    4

                                                    啟動DBMind

                                                    在主控節點,切換到openGauss-DBMind目錄下,輸入如下命令啟動DBMind:

                                                    1. 啟動配置,會在openGauss-DBMind目錄下建立dbmindconf/dbmind.conf配置檔案:
                                                      gs_dbmind service setup -c dbmindconf
                                                      2. 切換到openGauss-DBMind目錄,並修改配置檔案:
                                                        vi dbmindconf/dbmind.conf

                                                        其中必填的配置項如下:

                                                        • TSDB

                                                        TDSB為時序資料庫配置,即prometheus相關資訊。

                                                          [TSDB]  name = prometheus # The type of time-series database. Options: prometheus.  host = {主控節點ip:192.168.100.4} # Address of time-series database.  port = 9090 # Port to connect to time-series database.
                                                          • METADATABASE

                                                          DBMind伺服器所建立的metadatabase資料庫相關資訊,注意使用者需要有資料庫建立的許可權。在啟動DBMind之前,需要把metadatabase建立好。

                                                            [METADATABASE]   dbtype = opengauss # Database type. Options: sqlite, opengauss, postgresql.    host = {資料庫主節點ip:192.168.100.1} # Address of meta-data database.    port = {資料庫佔用的埠號:6789} # Port to connect to meta-data database.    username = dbmind_monitor # User name to connect to meta-data database.    password = test_123 # Password to connect to meta-data database.    database = metadatabase # Database name to connect to meta-data database.
                                                            • WORKER

                                                            該模組用於指定DBMind可以使用的worker子程式數量,如果寫0則會進行自適應,儘可能多地使用CPU資源。

                                                            使用者可以使用cat /proc/cpuinfo | grep "physical id" | fort | uniq | wc -l命令檢視邏輯CPU的個數,根據伺服器情況配置worker子程式數量。

                                                              [WORKER]    process_num = 2  # Number of worker processes on a local node. Less than or equal to zero means adaptive.
                                                              • AGENT

                                                              該模組用於指定DBMind連線到openGauss Agent的資訊。使用該Agent,可以讓DBMind獲取到被監控例項的即時狀態,從而提高分析準確性。同時,也可以向資料庫例項下發一些變更動作。

                                                              masterurl為`http://{DBMind伺服器IP}:{opengaussexporter監聽埠}`,置空會自動識別。usename為資料庫例項的dbmind_minotor使用者。

                                                                [AGENT]    master_url =     username = dbmind_monitor # Username to login the monitoring database. Credential for agent.    password = test_123  # Password to login the monitoring database. Credential for agent.
                                                                • TIMED_TASK

                                                                設定定時任務:

                                                                Discard_expired_results: 刪除過期結果

                                                                self_monitoring:指標異常監控

                                                                daily_inspection:日檢

                                                                weekly_inspection:周檢

                                                                monthly_inspection: 月檢

                                                                slow_sql_diagnosis:慢SQL診斷

                                                                knob_recommend:引數調優

                                                                slow_query_killer:慢SQL查殺

                                                                  [TIMED_TASK]   task=discard_expired_results,self_monitoring,daily_inspection, weekly_inspection,slow_sql_diagnosis,knob_recommend,slow_query_killer# select the scheduled task to start,separated by ','.
                                                                  • WEB-SERVICE

                                                                    [WEB-SERVICE]    host = 192.168.100.4  # Which host to bind for web service. '0.0.0.0' means to bind all.    port = 8080  # Port to listen for web serivce.
                                                                    3. 配置項初始化:
                                                                      gs_dbmind service setup --initialize -c dbmindconf
                                                                      4. 啟動DBMind服務:
                                                                        gs_dbmind service start -c dbmindconf

                                                                        上述步驟執行完之後,就可以透過http://{DBMind伺服器IP}:8080訪問DBMind前臺頁面。


                                                                        來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023856/viewspace-2948696/,如需轉載,請註明出處,否則將追究法律責任。

                                                                        相關文章