はじめに
Prometheusでは,アラートをyamlファイルで設定します.
メトリクスの入力が長くて面倒だったので,少しでも楽をするためにメトリクスの予測変換をvimの機能に追加しました.
設定の手順
設定ファイルの作成
ホームディレクトリに.vimrc
という設定ファイルを作成します.
let apiurl = 'http://<ドメイン名>:<ポート番号>/api/v1/label/__name_/values'
は設定したいPrometheusのドメイン名とポート番号を設定してください
~/.vimrc
" 補完関数の定義
" 2回呼び出しが行われる
" 1.補完するテキストの文字列の最初の行を変える
" 2.補完するテキストの候補をリストで返す
function! MyCompleteFunc(findstart, base)
" findstartが1の場合、補完開始位置を返す
if a:findstart
" getline('.')で現在カーソルが置かれている行の文字列を取得
" col('.')-1で現在カーソルが置かれている行を取得
" これらを使って,現在カーソルが置かれている文字列の最初の行を返 す
let moji = getline('.')
let start = col('.') - 1
while start > 0 && moji[start - 1] =~ '\w'
let start -= 1
endwhile
return start
else
" findstartが1以外の場合、予測変換を実行する
" APIを呼び出して補完候補を取得
let api_url = 'http://<ドメイン名>:<ポート番号>/api/v1/label/__name__/values'
let response = system('curl -s ' . api_url)
let json_data = json_decode(response)
" 'data'フィールドから候補を取得
if has_key(json_data, 'data')
let candidates = json_data.data
else
let candidates = []
endif
" baseで始まる候補をリストに追加
let matches = []
for candidate in candidates
if candidate =~ '^' . a:base
call add(matches, candidate)
endif
endfor
return matches
endif
endfunction
" 補完関数を設定
set completefunc=MyCompleteFunc
" 補完候補としてユーザー定義の補完を使う
set complete=u
" 補完のオプション
" menuoneで補完候補が1つだけの場合でも補完メニューを表示する
" noselectで補完候補が表示された際に、最初の補完候補を自動的に選択し な いようにする
set completeopt=menuone,noselect
" 補完関数
function! s:auto_cmp_start() abort
" 既に補完ウィンドウが表示されている場合は何もせず終了
if pumvisible()
return
endif
" getline('.')で現在カーソルが置かれている行の文字列を取得
let line = getline('.')
" expr:で始まる場合
if line =~ '^\s*expr:'
" カーソルより左側の範囲を取得し、[:keyword:]を使って補完に使えない記号などを除去
let prev_str = (slice(getline('.'), 0, charcol('.')-1) .. v:char)
\ ->substitute('.*[^[:keyword:]]', '', '')
" カーソル直前の部分(補完元文字列)が最低文字数に満たなければ終了
if strchars(prev_str) < 1
return
endif
" CtrlX+CtrlUを実行して補完スタート
call feedkeys("\<c-x>\<c-u>", 'ni')
endif
endfunction
" 文字を入力時に上記の関数を自動で実行
augroup auto_cmp_start
autocmd!
autocmd InsertCharPre * call s:auto_cmp_start()
augroup END
設定の反映
~/.vimrc
を保存した後,vimを開く
cdsl@arita-master3:~$ vim
設定を反映させるためにvimのコマンドモードで再読み込みをする.
:source ~/.vimrc
実行結果
好きなアラート設定ファイルを開く
cdsl@arita-master3:~/test$ vi esxi-rule.yaml
expr:
が含まれている行に,インサートモードで文字を入力したらメトリクスの予測変換が出てくる.
vm
と入力したら,vmware_datastore_accessible
やvmware_datastore_capacity_size
と予測変換が出てきた.