V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
DAPTX4869
V2EX  ›  Python

问下大佬们, 用 Python 怎么从 grafana 获取数据?

  •  
  •   DAPTX4869 · 2020-10-31 17:58:23 +08:00 · 3973 次点击
    这是一个创建于 1490 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个定时发送需求, 现在是靠人肉获取.
    监控数据汇总在 grafana 上, 想直接爬 url 上去拿, 发现 requests 拿不到数据;
    官方的 API 库也没找到相关信息...
    爬虫菜鸡, 求指导~

    第 1 条附言  ·  2020-11-01 10:36:11 +08:00
    直接用 requests 不可行.
    折腾 selenium 还是获取不到关键数据, 感觉要 gg
    第 2 条附言  ·  2020-11-01 10:39:30 +08:00
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--no-sandbox')    
    
    url="http://<IP:PORT>/d/SsYvTg6Wk/rights?orgId=1&from=now-1h&to=now" 
    #url copy from browser chrome
    
    browser=webdriver.Chrome(executable_path="./chromedriver", chrome_options=chrome_options)
    browser.header_overrides = {
        'Authorization': 'Bearer xxx'
    }
    browser.implicitly_wait(10)
    browser.get(url)
    # browser.execute_script("return document.body.innerHTML")
    browser.find_element_by_id('flotGagueValue0')
    
    第 3 条附言  ·  2020-11-01 15:58:51 +08:00
    被 chrome 坑了...搜了下没法添加头部, 18 年也有中招的 V 友
    https://www.v2ex.com/t/459227
    14 条回复    2020-11-02 10:26:06 +08:00
    SingeeKing
        1
    SingeeKing  
       2020-10-31 18:03:08 +08:00
    grafana 只是展示,具体的要用数据源的 API,如果非得从 grafana 可以用 Data source proxy calls https://grafana.com/docs/grafana/latest/http_api/data_source/#data-source-proxy-calls
    DAPTX4869
        2
    DAPTX4869  
    OP
       2020-10-31 19:10:53 +08:00
    @SingeeKing #1 直接从这里获取的话那样就得自己计算了....还是希望从爬虫入手, 看来能要完全模拟浏览器行为才行
    37Y37
        3
    37Y37  
       2020-10-31 20:17:44 +08:00
    建议还是从数据源拿数据,去爬 grafana 页面也有成本,不如一步到位
    DAPTX4869
        4
    DAPTX4869  
    OP
       2020-10-31 20:28:50 +08:00
    @37Y37 #3 就是不止一个数据源(zabbix, elk)才想在 grafana 上搞...
    threeEggs123
        5
    threeEggs123  
       2020-10-31 20:43:30 +08:00 via Android
    graphna
    threeEggs123
        6
    threeEggs123  
       2020-10-31 20:45:02 +08:00 via Android
    @threeEggs123 grafana 只显示,你建 dashboard 的时候看一下 data source 从哪里来的不就好了,是 graphite 还是 ES 还是哪里,直接从对应的 data source 拿不就好了
    DAPTX4869
        7
    DAPTX4869  
    OP
       2020-11-01 10:34:54 +08:00
    @threeEggs123 #6 elk + zabbix, 数据拿到手还要自己筛选计算的
    threeEggs123
        8
    threeEggs123  
       2020-11-01 10:50:44 +08:00 via Android
    zabbix 不知道我就不说了。elk 的话,如果你在 grafana 里面建的图表,你在 es-kibana 里面也可以手动建好,然后看看 kibana 里面的 es query 是什么,这不就从 es 里面查出来了。
    EminemW
        9
    EminemW  
       2020-11-01 11:05:40 +08:00
    你拿 grafana 的数据跟拿数据源的数据没什么不同。。
    cszchen
        10
    cszchen  
       2020-11-01 12:54:31 +08:00 via Android
    可以把 grafana 的图表插入自己的网页吧
    vhysug01
        11
    vhysug01  
       2020-11-01 13:10:13 +08:00
    如果不要求实际数据,可以拿 selenium 截图发送;定时查看这种,感觉也没有必要精确度特别高
    DAPTX4869
        12
    DAPTX4869  
    OP
       2020-11-01 15:01:27 +08:00
    @vhysug01 #11 有打算弄这个...不过菜鸡运维折腾要命
    killva4624
        13
    killva4624  
       2020-11-02 10:08:19 +08:00
    换个思路吧,查询条件或者语句从 Grafana dashboard API 里拿,然后写对应专门的 elk 和 zabbix 接口去取数据。
    ghjacky
        14
    ghjacky  
       2020-11-02 10:26:06 +08:00
    grafana 只是个前端渲染。。你得看你们 grafana 的配置,看后端对接的什么数据源,从数据源获取。比如 Prometheus 或者 elasticsearch,都有相应的 SDK 啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2813 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:48 · PVG 15:48 · LAX 23:48 · JFK 02:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.