Skip to main content

kibana建置,以及基礎介紹

· 3 min read
zaxro

kibana

這邊用docker-compose起服務,不過會有conatiner一個使用者,而非預設的root

mkdir -p ./data
chown -R 472:472 ./data
version: "3.3"
services:
grafana:
image: grafana/grafana-enterprise:9.5.6
user: "472"
container_name: grafana
restart: unless-stopped
environment:
- GF_SERVER_ROOT_URL=http://*.948787.store/
- GF_INSTALL_PLUGINS=grafana-clock-panel
ports:
- '3000:3000'
volumes:
- '$PWD/data:/var/lib/grafana'

基本上,grafana只要設定資料源去拉prometheues,然後知道怎麼找適合的dashboard,以及變數如何設定就差不多!

變數設定

variable image

VariableDefinition
origin_prometheuslabel_values(origin_prometheus)
joblabel_values(node_uname_info{origin_prometheus=~"$origin_prometheus"}, job)
hostnamelabel_values(node_uname_info{origin_prometheus=~"$origin_prometheus",job=~"$job"}, nodename)
nodelabel_values(node_uname_info{origin_prometheus=~"$origin_prometheus",job=~"$job",nodename=~"$hostname"},instance)

....

這邊label_values(origin_prometheus)就是用origin_prometheus去配合service-level等級的label去找

service-level target 第二行job則是 多了labeljob去分類目標主機,然後配合metric去分類主機,. metric 分類 最後的效果就是在你的dashborad會可以看到各分類

dashboard依據變數抓取主機

這邊是以grafana模板11074為範例,最後的效果就會像grafan dash board11074

label_values(node_uname_info{job=~"$job"}, nodename)  

node_uname_info: 這是一個Prometheus監控系統中的metric指標名稱。它通常用來收集有關節點(主機)的系統資訊,例如操作系統的版本、主機名等。

{job=~"$job"}: 這是一個過濾條件,用於僅選擇特定的監控作業(job)。在這裡,您使用了正則表達式 $job 作為變數,該變數可能代表不同的作業名稱。

label_values(...): 這是一個PromQL函數,用於檢索指定metric的特定標籤(label)的所有可能值。在這個情境下,您想要獲取所有符合過濾條件的節點名稱。

nodename: 這是您想要獲取的標籤名稱,它可能代表每個節點的名稱。

簡言之,他會提取所有node_umane_info這個metric,過濾出含有job這個label的值,最後取得該metric剩下符合者的label是node_name這個的所有的值!