通过学习 InfluxDB、Grafana 和 Telegraf 来监控你的 Python 应用程序的行为

📅 2026/8/12 17:00:46
通过学习 InfluxDB、Grafana 和 Telegraf 来监控你的 Python 应用程序的行为
这是您需要在-中添加的相关位:grafana: container_name: grafana image: grafana/grafana:latest ports: - 3000:3000 volumes: - ./grafana/data:/var/lib/grafana不复杂, 把端口3000运用到Web应用程序上之中, 我们嗣后会对其予以配置。流入数据库瞅瞅, 网站这般模样您便能知悉其功能。要把它纳入我们的堆栈里头, 我们得于文件里增添这个额外部分influxdb: container_name: influxdb image: influxdb:latest ports: - 8086:8086 env_file: - env.influxdb volumes: - ./influxdb/data:/var/lib/influxdb一些重要的事情:INFLUXDB_DATA_ENGINEtsm1 INFLUXDB_REPORTING_DISABLEDfalse INFLUX_DBmetrics INFLUXDB_USERadmin INFLUXDB_ADMIN_ENABLEDtrue电报是由进行制造的那同一家公司制造而成的。您能够在这个地方阅读与之有关于它的更多信息, 它是一个带有好多插件的服务器代理, 能够和进行连接, 并且存储与您的应用程序相关的好多指标, 有CPU使用情况、内存使用情况等等之类。您绝对切实能够拓展其可以检测到的内容。这是相关的 - 位:telegraf: container_name: telegraf image: telegraf container_name: telegraf restart: always depends_on: - influxdb environment: HOST_PROC: /rootfs/proc HOST_SYS: /rootfs/sys HOST_ETC: /rootfs/etc volumes: - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/rootfs/sys:ro - /proc:/rootfs/proc:ro - /etc:/rootfs/etc:ro请留意, 除了我们所挂载的、用于具备持久数据的卷之外, 我们另外存在一些环境变量, 这些变量会告知从何处去获取有关进程以及系统的某些信息。您要想让卷部分正常开展工作, 就得在本地目录当中创建一个.conf 的文件, 并且去进行一些设置。在这儿您能够看到内容。这是相当基本的, 当然是能够予以改进的。总而言之,这是您需要的完整-.yaml:为您的指标添加代码差不多你就完成了。要是此刻我们开启堆栈, 所有状况都会正常运转, 只是存在这样一个事实, 即你的应用程序不会给发送任何东西, 并且你仅仅能访问系统数据。咱们来增添些东西:鉴于我仅存有一个名为main.py的文件, 此为一个极为简易的Flask网络应用程序, 这便是我所具备的内容。from flask import Flask from datetime import datetime from influxdb import InfluxDBClient client InfluxDBClient(influxdb, 8086, admin, admin, metrics) app Flask(__name__) app.route(/hello) def hello(): client.write_points([{ measurement: endpoint_request, tags: { endpoint: /hello, }, time: datetime.now(), fields: { value: 1 } }]) return Hello World! app.route(/bye) def bye(): client.write_points([{ measurement: endpoint_request, tags: { endpoint: /bye, }, time: datetime.now(), fields: { value: 1 } }]) return Bye World! if __name__ __main__: app.run (host0.0.0.0)瞧瞧这儿, 我们要怎样在一开始的时候运用适宜的参数来给数据库初始化一位客户端, 紧接着, 在每一个端点之处, 我们开展那个方法的调用以便把相关的内容写入到数据库里面去。我选定在每一回调用端点的时候记录一个“1”, 经由这般, 随后我能够借助请求该字段的总和然后在仪表板当中将其以可视化的形式展示出来。这并非是唯一的办法, 不过算是当中的一种办法。启动并运行使用 - 构建在控制台中运行此命令以启动堆栈:docker-compose up --build稍后进行提出, 要是你不存在任何新的事物需要去重新建立起来, 那么, 请对 build 参数进行省略处理。于此刻, 您的堆栈会以交互模式予以运行, 在此模式之下, 您能够看到日志会于控制台之中呈现出来。您能够借由按下CtrlC的方式将其停止。然而, 经由如此这般的操作之后, 堆栈并不会全然下降。随后您所需要去做的是。docker-compose down如果要从控制台分离启动它,请执行docker-compose up -d配置仪表板唔, 那么, 您的那个堆栈已然启动起来了, 并且正处于运行的状态。针对您的api端点实施一些调用操作, 如此这般它就会注册一些访问情况, 而且数据库之中也记录下了一些数据。之后借着转到这种行为: 3000打开。如何使用登录后(管理员/管理员),您需要做的第一件事是添加数据源:( %/ )( %/ )需要您以作为主机名去进行配置, 鉴于这是文件里的服务名称。不然的话我们就得去检查容器以便找出内部IP地址, 而这更叫人难以理解, 毕竟它是能够改变的。利用自动发现当前IP能为我们免去麻烦。创建一个新的仪表板...( %/ )您已然做好了添加新面板的准备, 就这个例子而言, 我会去添加空闲CPU的百分比, 我拥有由其提供的数据, 鉴于这是个微不足道的应用程序, 您会看到这个百分比挺大, 原因是我几乎没对这个应用程序做任何事情。( %% /)要是您点击屏幕接下来的部分所在之处, 于查询造就者关联范畴间, 能够择拿来自您的起始之处, 在这点示例期间阶段来讲哟, 我们仅具惟独一个数据根基存在了, 且应当借由可利用的选项条件之时, 去自动地填充下拉呈现的菜单状态了句号。瞅一瞅这个另外的面板, 这会构建出一个计数器, 其作用是记录“/hello”被访问的频次, 该数据源自我们放进应用程序里的代码。( %/ )瞅瞅是怎样于下拉列表里现身的, 鉴于这乃是我们自代码那儿留存的键。接着您能够抉择怎样去处置这般的数据。就我的情形来讲, 我于计数器之中展现所有条目的总计之和。能够瞧见, 这是个极其酷且全面的工具。我提议围绕各异的指标来构建面板。它着实强大我期望你能够于本教程之中寻觅到些许用途。此对于我而言亦是一个全新的主题, 因而倘若您存有任何提示或者意见, 请告知我