PLG轻量日志监控系统(三)Grafana API

目的: 尽量通过API'自动化'完成,增加'效率'

Grafana HTTP API

官方Dashboard操作

①  创建API Keys

说明: 可以通过'UI'创建,也可以通过'命令行'创建,两种方式都会'创建'

(1) 图形化

用grafana的api'需要鉴权',可以进去'grafana页面',按照'下面方式'申请api key

说明: 可以通过'Role'和'Date'进行'更细'粒度的控制

(2)API自动创建

说明: 利用'user:passwd'进行'API Keys'的创建

curl -s -X POST -H "Content-Type: application/json" \

-d '{"name":"loki"}' \

http://admin:admin@localhost:3000/api/auth/keys | jq -r .key

备注: '-r'去除两边的"双引号"

②   创建数据源

案例:删除'loki'的数据源,然后'非交互创建'数据源

使用'API Keys':保存'响应'中的key值,前面'拼接好'固定的Bearer

+++++++++++ '查看有哪些数据源头'  +++++++++++

curl -X POST -H "Content-Type: application/json" \

-H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # -u 'user:passwd'也可

-d '{"name":"loki_pro","type":"loki","url":"http://127.0.0.1:","access":"proxy","basicAuth":false}' 

"http://127.0.0.1:3001/api/datasources"

细节点: 重点是'type(数据源的类型)'和'url'  --> 'prometheus'

删除数据源  创建数据源

③  dashboard api

掌握: 'API' 创建'fold(多层级)',并在对应'fold'创建'Dashboard'

创建'Dashboard': 

  1)首先在grafana中通过json model来'导出'我们的dashboard

  2)curl -H "Content-Type: application/json" -X POST \ 

    -H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \

    -d @/usr/local/dashboards/dashboard.json \

    "http://127.0.0.1:3001/api/dashboards/db"

 注意: grafana创建dashboard需要一个'固定'的格式,注意'panels'和'templating'

grafana创建dashboard需要一个固定的格式,否则报错 

查询所有的 Fold  创建Fold

④  先通过UI创建一个Dashoard

说明: 针对'loki'数据源的

⑤  loki的数据模型

二   API案例

说明: '自动化'创建一个Dashoard

关注: '创建 API Keys'、查询'fold'、'查询和导出Dashboard'、在'fold'下新建'Dashoard'

补充: 每个'Dashoard'对应一个'service(微服务)'

①  Authentication HTTP API

1)查询'API keys'  --> GET /api/auth/keys

2)创建'API Keys'  --> POST /api/auth/keys

3)删除'API Keys'  --> DELETE /api/auth/keys/:id

②  配置数据源

1)查询'所有的'数据源   --> GET /api/datasources

2)查询'某一个'数据源   --> GET /api/datasources/:datasourceId  -->通过'id'

3)查询'某一个'数据源   --> GET /api/datasources/uid/:uid       -->通过'uid'

4)查询'某一个'数据源   --> GET /api/datasources/name/:name     -->通过'name'

5)查询'某一个'数据源   --> GET /api/datasources/id/:name       

6)创建'特定类型'数据源 --> POST /api/datasources               -->注意'-d'参数

7)更新'数据源'        --> PUT /api/datasources/:datasourceId  -->注意'-d'参数

8)删除'数据源'        --> DELETE /api/datasources/:datasourceId

9)'检查'数据源        --> GET /api/datasources/uid/:uid/health

10)获取数据源'资源'    --> GET /api/datasources/:datasourceId/resources/*

掌握'常见数据源(小写)'类型: Elasticsearch、'Loki'、MySQL、PostgreSQL、'Prometheus'

创建数据源

③  Folder API操作

按照'一定的标准'把dashboard分类,放到'不同'的folder中,'默认'处于General中

1) 查询'所有'的Folder    --> GET /api/folders

2) 基于'uid'查询Folder   --> GET /api/folders/:uid

3) 创建'Folder'         --> POST /api/folders         -->"重点!!!"

4) 更新'Folder'         --> PUT /api/folders/:uid     

5) 删除'Folder'         --> DELETE /api/folders/:uid

6) 基于'id'查询Folder    --> GET /api/folders/id/:id

补充: 'POST、PUT'需要传'json'格式的请求体

创建Folder

④  Dashboard API操作

1)'创建/更新'一个'Dashboard'  --> POST   /api/dashboards/db  -->注意'-d'的参数

重要: panels'定义的各种panel信息'、templating'定义的variable'

2) 查询'某一个'Dashboard      --> GET    /api/dashboards/uid/:uid

3) 删除'某一个'Dashoard       --> DELETE /api/dashboards/uid/:uid

4) 查询'Home'的Dashboard     --> GET   /api/dashboards/home

5) 获取'Dashboard'的tags     -->GET /api/dashboards/tags

Dashboard API Search

Panel面板介绍 

1) 没有'API'创建'panels',需要先通过dashboard'手动的创建出'所需要展示的'图标'

2) 然后'复制json model',将其'保存'成dashboard.json',然后使用API'来创建'Dashboard'

3) curl -H "Content-Type: application/json" -X POST \
         -d @/usr/local/dashboards/dashboard.json \
         -H "Authorization: Bearer TOKEN值" \
         "http://127.0.0.1:3001/api/dashboards/db"

++++++++++++++ '复制其它Dashboard的panels和templating' ++++++++++++++

+++++++++++  '分割线(案例讲解)'  +++++++++++

应用场景: ​'新服务上线'基于'已有的环境(fold)','自动'创建'Dashbaord'

  

Dashbboard常见的字段

{
    "dashboard": {
        "id": null, 
        "title": "mysql", 
        "timezone": "", 
        "editable": true,
        "gnetId": null,
        "graphTooltip": 0,
        "panels": [
          {
            "datasource": null,
            "gridPos": {
              "h": 18,
              "w": 21,
              "x": 1,
              "y": 0
            },
            "id": 2,
            "options": {
              "dedupStrategy": "none",
              "enableLogDetails": true,
              "prettifyLogMessage": false,
              "showCommonLabels": false,
              "showLabels": false,
              "showTime": false,
              "sortOrder": "Descending",
              "wrapLogMessage": false
            },
            "pluginVersion": "8.1.5",
            "targets": [
              {
               "expr": "{service_name=\"mysql\"}"
              }
            ],
			"title": "mysql",
			"type": "logs"
		  }
		],
        "style": "dark",
        "schemaVersion": 30
	},
	"folderId": 3,
	"folderUid": "_08iugcVk",
    "overwrite": false
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值