通过
Elixometer
搜集Elixir的运行时统计信息, 并存储到InfluxDB中, 提供给Grafana进行可视化.
应用程序统计
添加依赖
defp deps do
[
{:quantum, ">= 1.8.0"},
{:exometer_influxdb, github: "travelping/exometer_influxdb"},
{:exometer_core, "~> 1.4", override: true},
{:elixometer, "~> 1.2"},
{:lager, "~> 3.2", override: true},
{:hackney, "~> 1.6", override: true},
]
end
配置 config/config.exs
, 内容如下:
use Mix.Config
config :logger, :console,
level: :debug,
format: "$date $time $metadata[$level] $message\n",
handle_sasl_reports: true,
handle_otp_reports: true,
utc_log: true
import_config "#{Mix.env}.exs"
配置 config/dev.exs
, 内容如下:
use Mix.Config
config :elixometer, reporter: :exometer_report_influxdb,
update_frequency: 5_000, # 报告间隔, 每5秒向InfluxDb写入一次数据
env: Mix.env,
metric_prefix: "elixir" # 统计项前缀
# InfluxDb 报告器, 把测量测数据写入到InfluxDb时序数据库中
config :exometer_core, report: [
reporters: [
exometer_report_influxdb: [
protocol: :http, # 使用的协议
host: "", # InfluxDb 服务器IP地址或域名
port: 8086, # InfluxDb 服务器端口
db: "collectdb" # InfluxDb 数据库名称
]
]
]
在程序中使用
编写一个模块
require Logger
defmodule TgMeasure.Collector do
use Elixometer
def run do
Logger.debug "INCREMENT COUNTER"
n = :rand.uniform(100)
for _t <- 1..n do
update_counter("signup_user_count", 1)
end
end
end
运行它
iex -S mix
iex(1)> TgMeasure.Collector.run
到此, 你的应用程序会每隔5秒向你的InfluxDB数据库的8086端口提交一次数据. 可以通过
tcpdump -i eth1 'port 8086'
验证是否有数据包到达 8086
端口
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。