标签: telegraf

Try/Catch 不能防止崩溃

我正在使用telegraf bot 框架编写一个非常简单的 telegram-bot 。\n到目前为止,它使用.hears和回复了一些简单的命令.on,到目前为止一切正常。

\n\n

现在我实现了另一种.hears等待字符串的方法Miez。一旦它“听到”这个字符串,它就应该.replyWithDocument包含一个cat-api url。根据 cat-api 的 URL 在每次调用时都会提供一个随机的 cat-gif。到目前为止我的代码:

\n\n
const Telegraf = require(\'telegraf\')\n\nconst app = new Telegraf(\'<MY_TOKEN>\')\n\n// Connect/Express.js integration\nconst express = require(\'express\')\nconst expressApp = express()\n\nexpressApp.set(\'port\', (process.env.PORT || 5000));\n\n\napp.command(\'start\', (ctx) => {\n  console.log(\'start\', ctx.from)\n  ctx.reply(\'Welcome!\')\n})\n\napp.hears(\'Hi\', (ctx) => ctx.reply(\'Hallo!\'))\napp.hears(\'Marco\', (ctx) => ctx.reply(\'Polo\'))\napp.on(\'sticker\', (ctx) => ctx.reply(\'\xe2\x9d\xa4\'))\n\napp.hears(\'Miez\',(ctx) => {\n    try{\n          return ctx.replyWithDocument({\n            url: \'http://thecatapi.com/api/images/get?format=src&type=gif\',\n            filename: \'cat.gif\'\n          })\n\n       }catch(error){\n            return ctx.reply("Miau");\n       }\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您所看到的,我将其包装.replyWithDocument在 try/catch 块中。我这样做是因为给定的 …

javascript heroku telegram telegram-bot telegraf

1
推荐指数
1
解决办法
2317
查看次数

influxdb查询时如何写case?

我有一个Grafana + InfluxDB + Telegraf设置来监控我组织的服务器。我想制作一个仪表板,在其中监视多个服务器的计算机资源,例如 CPU、RAM 等。我想在 Grafana 仪表板中,如果我的服务器处理器高于 80%,则仅显示“0”;如果服务器处理器低于 80%,则显示“1”。为此,我如何使用CASE WHEN语句根据我设置的阈值显示 0/1。

influxdb grafana telegraf influxql

1
推荐指数
1
解决办法
8677
查看次数

如何使用 Telegraf 监控远程系统指标?

我会很感激一些关于如何构建堆栈telegraf + InfluxDB + Grafana以监控一组机器的建议。

我的场景

我已经telegraf + InfluxDB + Grafana在一台我称之为“监控实例”的机器上成功安装了堆栈。

我的系统是一个 API,由一台运行 nodejs 的机器和一个 postgres 实例组成。

我可以从我的 Postgresql 数据库(使用 postgres 的 Telegraf 输入插件)和我的应用程序(我以 prometheus 格式公开一些指标,telegraf 使用 prometheus 输入插件提取)中收集指标。

我的问题和疑惑

  • 监控节点和 postgres 实例的系统指标(cpu、mem 等)的最佳方法是什么?我应该在这台机器上安装 Telegraf 代理吗?
  • 如何将本地数据发送到“监控实例”?
  • 本地电报代理应该直接写入 influxdb 还是应该将指标发送到安装在“监控实例”中的 Telefraf?

提前致谢。

monitoring influxdb grafana telegraf

1
推荐指数
1
解决办法
4375
查看次数

无法使用 Stage.enter 和变量名称进入电报场景

我使用创建一个电报机器人telegraf使用向导。我想在我的机器人中有几个向导。如何进入另一个场景?我正在使用以下代码,但出现错误Cannot read property 'enter' of undefined

const Stage = require("telegraf/stage");
const WizardScene = require("telegraf/scenes/wizard");
const wiz1 = new WizardScene('task1',
    ctx => {...},
    ctx => {...}
);
const wiz2 = new WizardScene('task2',
    ctx => {...},
    ctx => {...}
);
const wiz3 = new WizardScene('task3',
    ctx => {...},
    ctx => {...}
);

const stage =new Stage([wiz1,wiz2,wiz3],{default: 'task1'})
bot.hears('anAction', (ctx) => {Stage.enter('wiz2')}); // this does not work
Run Code Online (Sandbox Code Playgroud)

node.js telegraf

1
推荐指数
1
解决办法
1680
查看次数

使用 TLS 与 Mosquitto 进行 Telegraf 连接

在我的系统(带有树莓派)中,我有一些传感器将数据发布到 Mosquitto,我使用 Telegraf 将数据传输到 influxDB 数据库,我使用 Grafana 来显示数据。

在没有 TLS 连接的测试期间(在 mosquittos 中)一切正常,但当我激活 TLS 时,我开始遇到 Telegraf 问题。

传感器使用 client.key、c​​lient.crt 和 ca.crt 将数据发送到代理。在代理中我可以看到来自传感器的数据。所以我认为问题不在于此。

在 telegraf 中(我想它作为客户端工作)我尝试配置 TLS 连接。查看 telegraf.service status ,它处于活动状态并且正在运行。查看日志,我没有看到连接中的错误,但我看不到来自代理的任何数据。

在 Telegraf.conf 中,我设置了证书,如下所示。我使用了用于连接到系统的传感器或其他客户端的文件,而不是使用 pem 文件:扩展名不同,我不知道问题是否在这里。

这里是Telegraf的配置(mqtt_consumer)

# # Read metrics from MQTT topic(s)
 [[inputs.mqtt_consumer]]
#   ## Broker URLs for the MQTT server or cluster.  To connect to multiple
#   ## clusters or standalone servers, use a seperate plugin instance.
#   ##   example: servers = ["tcp://localhost:1883"]
#   ##            servers = ["ssl://localhost:1883"] …
Run Code Online (Sandbox Code Playgroud)

raspberry-pi mosquitto telegraf

1
推荐指数
1
解决办法
1747
查看次数