2021年10月31日 星期日

vagrant 安裝docker與docker compose

1.先安裝vagrant plugin

  vagrant plugin install docker

  vagrant plugin install vagrant-docker-compose

2.VagrantFile

  Vagrant.configure("2") do |config|

  ...

    config.vm.provision :docker

    config.vm.provision :docker_compose

  end

其他詳細使用可以參考

https://github.com/leighmcculloch/vagrant-docker-compose

2021年10月26日 星期二

Prometheus資料清除

今天一早收到通報Grafana在昨天晚上就沒有資料

查了一下主機 硬碟爆了連使用ansible進去更新

都沒辦法建立暫存檔

要清理Prometheus的metrics資料 只能透過admin api處理

預設web admin api是沒有enable

1.需要在prometheus加入啟動web admin api

  docker-compose.yml

  prometheus:

    image: prom/prometheus:latest

    command:

      - '--config.file=/etc/prometheus/prometheus.yml'

      - '--storage.tsdb.retention=7d' //設定資料只保留7天

      - '--web.enable-admin-api' //啟動

      - '--web.enable-lifecycle'

  改了docker-compose.yml 只要重新啟動就會生效

2.在主機上透過curl呼叫 admin api執行刪除metrics

  指定job資料刪除

  curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={job="要刪除的job名稱"}'

  

2021年10月20日 星期三

以字串做sql時間欄位比較

當由前端要送一個值到db作日期的前後比較

而這個欄位的是dateTime欄位

要比較的值以MM.DD.YYYY 送進去就可以作比較

若用YYYYMMDD則無效

直接以new Date()送出則會發生錯誤

sql日期比較

當要對一個dateTime欄位作日期的比較

前端

ex: dateStr = moment().format('MM.DD.YYYY')

sql

SELECT * FROM mytable WHERE edate <='10.10.2021 00:00:00'

dbeaver換語系

dbeaver是可以跨平台的db工作

但裝起來卻是簡中顯示 要改成英文

需要去改dbeaver.ini設定

/sanp/dbeaver-ce/147/usr/share/dbeaver-ce/dbeaver.ini是唯讀改不了

透過修改

/var/lib/snapd/desktop/applications/dbeaver-ce_dbeaver-ce.desktop

加入-ln en設定

Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/dbeaver-ce_dbeaver-ce.desktop /snap/bin/dbeaver-ce -nl en

即可

2021年10月6日 星期三

git 發生 server certificate verification failed. CAfile: none CRLfile: none 錯誤

當由私人git repo下載安裝

可能出現錯誤

server certificate verification failed. CAfile: none CRLfile: none

造成無法安裝

可以透過環境設定

export GIT_SSL_NO_VERIFY=1

跳過檢查就可安裝 

2021年10月3日 星期日

vagrant shared folder npm問題與symlink操作

目的希望以vagrant建立開發環境

只將要開發的nodejs專案以shared folder方式

在host上執行開發

但問題會發生在 如果在shared folder內執行npm install

將造成錯誤

如果是在vm內的非shared folder執行是不會有什麼問題


目前測試比較簡易的作法是

shared folder內作npm install會安裝的node_modules目錄

不要是實體目錄,而只是一個連結到其他位置的symlink即可解決

ubuntu內建立symlink


ln -s 實體目錄 虛擬目錄


1.列出指定目錄下的symlink

  find 目錄 -type l

2.建立symlink

  ln -s 實體目錄 虛擬目錄

3.移除symlink

  rm 虛擬目錄

注意

  如果是實體目錄 必須以rm -rf 目錄名稱

  如果只是連結 只需要rm即可