2021年11月29日 星期一

mysqld exporter使用

要監控mysql server狀態

安裝role

ansible-galaxy install cloudalchemy.mysqld_exporter

透過ansible安裝mysqld exporter

playbook.yml

- hosts: all

  become: true

  roles:

    - role: cloudalchemy.mysqld_exporter

      mysqld_exporter_dsn: "user:password@(dbHost:3306)/"

      mysqld_exporter_web_listen_address: "0.0.0.0:9104" 

參考連結

https://github.com/cloudalchemy/ansible-mysqld_exporter/blob/master/defaults/main.yml

2021年11月17日 星期三

由command line 傳遞變數給ansible 與docker-compose

1.由command line傳送變數給ansible

  command:

    ansible-playbook -i hosts.yml --extra-vars "a=2 b=3" tasks/xxx.yml

    ansible-playbook -i hosts.yml -e "a=2 b=3" tasks/xxx.yml

  ansible:

    tasks:

      - name: add folder

        file:

          state: directory

          path: '{{a}}'

2.由ansible command line傳送陣列變數給ansible

  以json傳遞

  command:

    ansible-playbook -i hosts.yml --extra-vars "{'myitems':[1,2,3]}" tasks/xxx.yml

  ansible:

    loop: {{myitems}}

    tasks:

      - name: add loop folder

        file:

          state: directory

          path: '{{item}}'

3.由command line傳送變數給docker-compose

  ex:

  command:

    port=12345 docker-compose up -d

  docker-compose:

    ports:

      - ${api_port}:12345

4.由command line傳送變數給ansible再傳給docker-compose

  ex:

  command:

    ansible-playbook -i hosts.yml --extra-vars "api_port=12345" tasks/ansible.yml

  ansible.yml:

    tasks:

    - name: Shell Start node-api-server

      shell:

        cmd: 'port={{api_port}} docker-compose --compatibility up -d'

  docker-compose.yml:

    ports:

      - ${api_port}:12345

2021年11月10日 星期三

mongo-express錯誤listDatabases requires authentication

原本mongo+mongo-express運作相當穩定

後來掛掉 透過docker logs察看到一個錯誤

MongoError: command listDatabases requires authentication

需要驗證

在docker-compose.yml上加上設定ME_CONFIG_MONGODB_URL解決

ex: docker-compose.yml

mongo-express:

  image: mongo-express:latest

  container_name: mongo_admin

  restart: always

  ports:

    - 8081:8081

  environment:

    ME_CONFIG_MONGODB_ADMINUSERNAME: 帳號

    ME_CONFIG_MONGODB_ADMINPASSWORD: 設定密碼

    ME_CONFIG_SITE_BASEURL: /mongo

    ME_CONFIG_MONGODB_URL: "mongodb://帳號:密碼@mongo—container名稱:27017/"


2021年11月9日 星期二

透過 ansible 限制docker-compose 執行的cpu與記憶體

 實際場域遇到一個狀況

在Window Server運行node api server

發生node吃掉100%cpu 而讓系統無法回應


將node api server以docker佈署到Linux主機上

希望可以限制每個continainer的資源

限制可使用的cpu與記憶體

佈署docker container是透過ansible執行

ansible設定docker-compose的cpu限制 在3.x版後就不支援了

只能透過docker執行

要透過docker-compose執行 只能透過shell執行


安裝

1.docker-compose.yml

node-api-server:

  image: node:12.22.7-alpine3.14

  container_name: node-api-server

  working_dir: /usr/src/NODE_API_SERVER/bin

  restart: always

  command: >

    sh -c 'node index'

  volumes:

    - '/home/vagrant/project_pools:/usr/src/'

  ports:

    - 12345:12345

    - 9229:9229

  deploy:

    resources:

      limits:

        cpus: '0.40'

        memory: '300M'

2.ansible 安裝檔 install.yml

tasks

  - name: build docker

    become: true

    docker_compose:

      project_src: 'docker-comose檔案所在的目錄'

3.ansible 執行檔start.yml

tasks:

  - name: Shell Start node-api-server

    shell:

      cmd: docker-compose --compatibility up -d

      chdir: 'docker-comose檔案所在的目錄'

      

參考

https://blog.yowko.com/docker-compose-3-cpu-memory-limit/