4 接入数据源

接入数据源

根据「项目介绍」中的架构介绍,上面的方式搭建的夜莺,只是作为一个告警引擎使用,此时你可以在页面(注意,这里是页面)上添加数据源(菜单路径:系统配置-数据源),看图、配置告警规则。如果想要用夜莺来接收监控数据并转存到时序库,那就得通过配置文件(注意,这里是配置文件)告诉夜莺时序库的地址在哪里。还记得之前的架构图不?

在这个架构下,夜莺进程有两个角色,一个是作为告警引擎,一个是作为数据转发的 pushgateway,这里首先需要一个时序库,可以使用 Prometheus 或 VictoriaMetrics(推荐)。夜莺接收到数据之后会通过 remote write 方式转发给时序库。

1 部署时序库

1.1 Prometheus

Prometheus 的搭建,这里不再赘述,网上资料很多,比如可以参考 这里。唯一要注意的时候,启动 Prometheus 的时候需要传入一个参数:--web.enable-remote-write-receiver,只有开了这个参数(老版本的参数是 --enable-feature=remote-write-receiver,可以通过 ./prometheus --help 查看你的 Prometheus 的配置方式),Prometheus 才能通过 remote write 方式接收监控数据,否则后面跟夜莺对接的话会报接口 404。

如果你之前已经有 Prometheus 了,可以直接使用(记得检查是否开启了 --web.enable-remote-write-receiver),如果之前没有 Prometheus,那就不用安装了,直接使用 VictoriaMetrics。

1.2 VictoriaMetrics

VictoriaMetrics 的搭建,更为简单,从 VictoriaMetrics github releases 下载对应平台的发布包,解压缩里边只有一个二进制,执行 ./victoria-metrics-prod 即可启动,生产环境建议使用 systemd 托管,这里提供一个 systemd 的 service 文件供大家参考:

下载下面的链接:

https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.93.16/victoria-metrics-linux-amd64-v1.93.16.tar.gz

# 解压
tar xf victoria-metrics-linux-amd64-v1.93.16.tar.gz

root@n9e:~/vm# ll
total 31520
drwxr-xr-x 2 root  root      4096 Aug  1 15:10 ./
drwx------ 8 root  root      4096 Aug  1 15:07 ../
-rwxr-xr-x 1 zhang zhang 21211696 Jul 18 02:51 victoria-metrics-prod*
# /etc/systemd/system/victoriametrics.service
[Unit]
Description="victoriametrics"
After=network.target

[Service]
Type=simple

# 应用所在目录
ExecStart=/root/vm/victoria-metrics-prod

Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=victoriametrics

[Install]
WantedBy=multi-user.target
# 启动
systemctl enable --now victoriametrics.service 
systemctl status victoriametrics.service 

# 查看端口
ss -ntl| grep 8428
LISTEN 0      4096         0.0.0.0:8428       0.0.0.0:*   

VictoriaMetrics 默认会监听在 8428 端口,可以通过 http://IP:8428 访问 VictoriaMetrics 的 web 界面。

2 修改夜莺配置文件对接时序库

夜莺作为 pushgateway,需要告诉夜莺时序库的地址在哪里。夜莺的配置文件是 etc/config.toml,修改 [[Pushgw.Writers]] 部分即可,核心是 Url 部分,夜莺接收到指标数据之后,会通过 Prometheus remote write 协议写入 Url 指向的时序库(任何支持 Prometheus remote write 的存储都可以用)

2.1 对接 VictoriaMetrics 单机版

比如对接 VictoriaMetrics 单机版:

cd /root/n9e/
vim etc/config.toml

[[Pushgw.Writers]]
# 修改为自己的 vm IP
Url = "http://10.0.0.10:8428/api/v1/write"

重启夜莺服务

$ systemctl restart n9e.service 
$ systemctl status n9e.service 
● n9e.service - Nightinagle
     Loaded: loaded (/lib/systemd/system/n9e.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-08-01 15:48:05 CST; 5s ago
   Main PID: 5286 (n9e)
      Tasks: 6 (limit: 4513)
     Memory: 23.7M
        CPU: 2.738s
     CGroup: /system.slice/n9e.service
             └─5286 /root/n9e/n9e

Aug 01 15:48:05 n9e systemd[1]: Started Nightinagle.
Aug 01 15:48:05 n9e n9e[5286]: runner.cwd: /root/n9e
Aug 01 15:48:05 n9e n9e[5286]: runner.hostname: n9e
Aug 01 15:48:05 n9e n9e[5286]: runner.fd_limits: (soft=524288, hard=524288)
Aug 01 15:48:05 n9e n9e[5286]: runner.vm_limits: (soft=unlimited, hard=unlimited)

2.2 对接 Prometheus

对接 Prometheus,则配置就是:

cd /root/n9e/
vim etc/config.toml

[[Pushgw.Writers]]
# 修改为自己的 Prometheus IP
Url = "http://127.0.0.1:9090/api/v1/write"

2.3 对接集群版本的 VictoriaMetrics

如果对接的是集群版本的 VictoriaMetrics,则配置就是:

cd /root/n9e/
vim etc/config.toml

[[Pushgw.Writers]]
# 修改为自己的 vm 集群 IP
Url = "http://127.0.0.1:8480/insert/0/prometheus/api/v1/write"

2.4 同时对接多个数据源

在 toml 配置中,表示数组,即 [[Pushgw.Writers]] 配置段可以有多个,这样夜莺接收到数据之后,就会把数据同时写到多个后端时序库。比如:

vim etc/config.toml

[[Pushgw.Writers]]
Url = "http://127.0.0.1:9090/api/v1/write"
BasicAuthUser = ""
BasicAuthPass = ""

[[Pushgw.Writers]]
Url = "http://127.0.0.1:8428/api/v1/write"
BasicAuthUser = ""
BasicAuthPass = ""

上例中就是配置了两个时序库。

最后,重启夜莺进程,就完成了夜莺和时序库的对接。

3 在页面添加数据源

菜单操作入口:数据源。以 Prometheus Like 类型的数据源举例,创建页面填写的关键信息如下:

  • 数据源名称:自定义的数据源名称
  • URL:数据源的地址,页面上已经给了例子
  • 超时时间:默认 10 秒,有的时候查询重量级 promql 10 秒可能不够,可以调大这个值,比如改成 30000 毫秒,即 30 秒
  • 授权:用户名密码指的是数据源的 Basic auth 认证信息
  • Remote write URL:如果用到了记录规则,记录规则产生的新指标会通过该地址回写时序库。比如 VictoriaMetrics 单机版的 remote write 地址是 http://IP:8428/api/v1/write,Prometheus 的 remote write 地址是 http://IP:9090/api/v1/write,如果没有用到记录规则,这个字段可以忽略
  • 时序库内网地址:通常用于边缘机房下沉部署告警引擎的场景,如果该字段不为空,n9e-edge 会使用该地址访问时序库,如果该字段为空,n9e-edge 会使用上面的 URL 访问时序库
  • 关联告警引擎集群:如果只是部署了中心夜莺,这里就默认选择 default 即可,如果你当前添加的数据源是某个边缘机房的数据源,并且该边缘机房有专门的 n9e-edge 告警引擎,那么这里就选择对应的告警引擎集群,何为边缘机房部署模式?请参考前面的文档《附:边缘机房部署

3.1 新增数据源

这里以 vm 单机版本为例,这里的数据源类型为 Prometheus,因为 vm 和 Prometheus 共享 API

当然现在是没有数据源的,因为我们的都知道 vm 默认为时序数据库,所以我们还需要部署一个 Prometheus 并且将 exporter 采集的数据上传至 vm 中,这样 vm 里面就有了数据,在 n9e 的时序指标里面就能正常查询

4 部署 Prometheus 对接 vm 获取监控数据

1.创建目录下载安装包

root@server:~# mkdir /apps
root@server:~# cd /apps/
root@server:/apps# wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz
root@ubuntu:/apps# tar xf prometheus-2.31.1.linux-amd64.tar.gz 

2.解压完了之后可以看到对应的文件

root@server:/apps# ll prometheus-2.31.1.linux-amd64
total 185592
drwxr-xr-x 4 3434 3434      4096 Oct  6 00:43 ./
drwxr-xr-x 3 root root      4096 Nov 15 15:43 ../
drwxr-xr-x 2 3434 3434      4096 Oct  6 00:39 console_libraries/
drwxr-xr-x 2 3434 3434      4096 Oct  6 00:39 consoles/
-rw-r--r-- 1 3434 3434     11357 Oct  6 00:39 LICENSE
-rw-r--r-- 1 3434 3434      3646 Oct  6 00:39 NOTICE
-rwxr-xr-x 1 3434 3434 100357256 Oct  6 00:14 prometheus*           # Prometheus 执行程序
-rw-r--r-- 1 3434 3434       934 Oct  6 00:39 prometheus.yml        # Prometheus 配置文件
-rwxr-xr-x 1 3434 3434  89643838 Oct  6 00:17 promtool*             # Prometheus yaml 文件语法检查工具

3.创建软连接,这样的好处是后期 Prometheus 升级或者版本变化也好 service 文件不用修改

root@server:/apps# ln -sv /apps/prometheus-2.31.1.linux-amd64 /apps/prometheus
'/apps/prometheus' -> '/apps/prometheus-2.31.1.linux-amd64'

4.编写 service

root@server:~# vim /etc/systemd/system/prometheus.service 

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/ 
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/apps/prometheus/
ExecStart=/apps/prometheus/prometheus   --config.file=/apps/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

5.设置为开机自启动

root@server:~# systemctl daemon-reload 
root@server:~# systemctl enable --now prometheus.service 

# 查看当前 Prometheus 状态已经运行
root@ubuntu:~# systemctl status prometheus.service 
● prometheus.service - Prometheus Server
   Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-11-15 15:54:07 CST; 2min 54s ago
     Docs: https://prometheus.io/docs/introduction/overview/
 Main PID: 1845 (prometheus)
    Tasks: 8 (limit: 2290)
   CGroup: /system.slice/prometheus.service
           └─1845 /apps/prometheus/prometheus --config.file=/apps/prometheus/prometheus.yml

# 能够停止 Prometheus
root@ubuntu:~# systemctl stop prometheus.service 

# 重启
root@ubuntu:~# systemctl restart prometheus.service 

4.1 修改 Prometheus 配置实现对接vm

修改配置

vim prometheus/prometheus.yml 

# vm 单机版 api
remote_write:
  - url: "http://localhost:8428/api/v1/write"   # 这里的 URL 是您 VictoriaMetrics 单机版的地址

# vm 集群版 api
remoteWrite:
  - url: http://vminsert:8480/insert/0/prometheus/   # 这里的 URL 是您 VictoriaMetrics 集群版的地址

重启 Prometheus

systemctl restart prometheus.service 

 systemctl status prometheus.service 
● prometheus.service - Prometheus Server
     Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-08-01 16:07:00 CST; 9s ago
       Docs: https://prometheus.io/docs/introduction/overview/
   Main PID: 5518 (prometheus)
      Tasks: 9 (limit: 4513)
     Memory: 20.8M
        CPU: 646ms
     CGroup: /system.slice/prometheus.service
             └─5518 /apps/prometheus/prometheus --config.file=/apps/prometheus/prometheus.yml

Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.002Z caller=head.go:590 level=info compon>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.002Z caller=head.go:596 level=info compon>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.006Z caller=main.go:866 level=info fs_typ>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.007Z caller=main.go:869 level=info msg="T>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.007Z caller=main.go:996 level=info msg="L>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.011Z caller=dedupe.go:112 component=remot>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.011Z caller=dedupe.go:112 component=remot>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.014Z caller=dedupe.go:112 component=remot>
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.018Z caller=main.go:1033 level=info msg=">
Aug 01 16:07:01 n9e prometheus[5518]: ts=2024-08-01T08:07:01.020Z caller=main.go:811 level=info msg="S

4.2 n9e 验证数据

可以看到此时在夜莺的查询中就能够正常获取数据

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇